Localization Package

個人でゲームを開発してアプリストアに公開する場合、日本国内だけでなく世界に向けて配信することが出来ます。 その場合ゲーム内の言語を日本語だけでなく、他の言語にも対応しておくと海外のユーザーにも遊んでもらえる可能性が増えます。 Unityには多言語対応を簡単に実装できる公式パッケージが提供されています。 これを使うことで、UI上のテキストや画像などのアセットをローカライズしやすくなります。

Unity Localizationパッケージのインストール

Package ManagerからLocalizationパッケージを探してインストールします。 内部でAddressablesパッケージを使用しているため、Addressablesもインストールされます。

セットアップ

Localization Settingsの作成

Unity Editorのメニューから AssetsCreateLocalizationLocalization Settingsを選択します。 保存先を選択し、Localization Settingsを作成します。

ロケールの作成

作成された、Localization Settingsアセットを選択し、Inspector上でAdd Localeボタンを押します。 Add Localeウィンドウが開くので必要な言語にチェックを入れます。 ロケールとは、言語や地域の設定を表すもので、

UnityLocalizationシステムでは対応する言語や地域を指定するために使用されます。 今回は、JapaneseEnglishにチェックを入れました。

Add Localesボタンを押して保存先を選択するとロケールの作成は終了です。

Localization Tableの作成

次にUnity Editorのメニューから WindowAsset ManagementLocalization Tablesを選択します。 Localization Tablesウィンドウが開くので、+ New Table Collectionを押します。

New Table Collectionウィンドウが開きます。 Localeは既に追加してあるので必要な分を選択し、Createボタンを押します。 このウィンドウから言語を追加することも出来ます。

これで文字列を追加できるようになりました。

New Entryを押すことで、キーとそれに対応する各言語の文字列を入力します。

日本語、英語の順に並び替える

今回の手順で作成されたLocalization Tableは英語、日本語の順になっています。 日本語を前にしたい場合は、Localization Settingsを選択し、 Available Localesの順を入れ替えてください。

これでLocalization Tableも日本語、英語の順になります。

テキストをLocalization対応する

TextMeshProText(Legacy)のコンポーネントを追加すると、 コンポーネントのコンテキストメニューにLocalizeが追加されています。

Localizeを選択すると、

Localize String Eventコンポーネントが追加されます。

String Referenceから、先ほどLocalization Tableに追加したキーを選択できるようになっているので設定してみます。

日本語と英語の文字列が表示されました。

この状態で実行すると、対象のTextMeshProコンポーネントに文字列が設定されます。

言語を切り替える

Unity Editor上では、Game Viewの右上にロケールを切り替えるドロップダウンリストが表示されます。 これを切り替えることで言語を切り替えることが出来ます。

ゲーム中に言語を切り替えるには、自分でオプション画面などで言語設定を追加する必要があります。

変更後以下の様なメソッド用意して、言語を切り替える必要があります。

言語コードをセーブデータに保存しておけば、起動時に言語を切り替えることも出来ます。

using UnityEngine.Localization.Settings;

public void ChangeLanguage(string languageCode)
{
    var locale = LocalizationSettings.AvailableLocales.Locales
        .Find(l => l.Identifier.Code == languageCode);

    if (locale != null)
    {
        LocalizationSettings.SelectedLocale = locale;
    }
}

まとめ

今回は多言語対応のためのLocalizationパッケージについて解説しました。 後からコンポーネントを追加して回るのも大変なので、 ローカライズを考えているなら序盤からLocalizationパッケージを導入しておいた方が良いかもしれません。 また、ローカライズまで考えていなくても、テキストを一元管理できるようになるので、 ちょっと文言を変えたいと思ってもシーンやプレハブを開かずとも、 Localization Tableを編集するだけで対応できます。 Localizationパッケージを使えば、 csvファイルからインポートしてきたり、 Google Spread Sheetと同期してくることも出来ます。 この辺りもいずれ解説したいと思います。

ローカライズ対応した場合は 言語によってはフォントが正しく表示されなかったり、 文字数が増えてレイアウトが乱れる場合もあるので、 全ての箇所×全ての言語でしっかり確認が必要です。


🔗関連ページ

🔗関連ページ