Localization Package
個人でゲームを開発してアプリストアに公開する場合、日本国内だけでなく世界に向けて配信することが出来ます。
その場合ゲーム内の言語を日本語だけでなく、他の言語にも対応しておくと海外のユーザーにも遊んでもらえる可能性が増えます。
Unity
には多言語対応を簡単に実装できる公式パッケージが提供されています。
これを使うことで、UI
上のテキストや画像などのアセットをローカライズしやすくなります。
Unity Localizationパッケージのインストール
Package Manager
からLocalization
パッケージを探してインストールします。
内部でAddressables
パッケージを使用しているため、Addressables
もインストールされます。
セットアップ
Localization Settingsの作成
Unity Editor
のメニューから
Assets
→Create
→Localization
→Localization Settings
を選択します。
保存先を選択し、Localization Settings
を作成します。
ロケールの作成
作成された、Localization Settings
アセットを選択し、Inspector
上でAdd Locale
ボタンを押します。
Add Locale
ウィンドウが開くので必要な言語にチェックを入れます。
ロケールとは、言語や地域の設定を表すもので、
Unity
のLocalization
システムでは対応する言語や地域を指定するために使用されます。
今回は、Japanese
とEnglish
にチェックを入れました。
Add Locales
ボタンを押して保存先を選択するとロケールの作成は終了です。
Localization Tableの作成
次にUnity Editor
のメニューから
Window
→Asset Management
→Localization Tables
を選択します。
Localization Tables
ウィンドウが開くので、+ New Table Collection
を押します。
New Table Collection
ウィンドウが開きます。
Locale
は既に追加してあるので必要な分を選択し、Create
ボタンを押します。
このウィンドウから言語を追加することも出来ます。
これで文字列を追加できるようになりました。
New Entry
を押すことで、キーとそれに対応する各言語の文字列を入力します。
日本語、英語の順に並び替える
今回の手順で作成されたLocalization Table
は英語、日本語の順になっています。
日本語を前にしたい場合は、Localization Settings
を選択し、
Available Locales
の順を入れ替えてください。
これでLocalization Table
も日本語、英語の順になります。
テキストをLocalization対応する
TextMeshPro
やText(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
と同期してくることも出来ます。
この辺りもいずれ解説したいと思います。
ローカライズ対応した場合は 言語によってはフォントが正しく表示されなかったり、 文字数が増えてレイアウトが乱れる場合もあるので、 全ての箇所×全ての言語でしっかり確認が必要です。