🦁
[unity]Addressables を使った画像のローカライズ対応
ローカライズ対応するにあたってかなり便利でしたので、使い方をシェアします。
自前でなんかしら対応するより、とても便利。
🎯機能(注意点)
- Addressables でなければ機能しません
- なるべく処理が重くならないよう設計されています。例えば、設定した全てのロケール画像を裏読みしてたりはしません
- ゲーム中、動的に変えることも可能
- ただし、画像の再ロードなど重い処理が連続的に走らないような設計にしましょう
- 文字列も設定できるので、量が少なければこれを使うのもアリ(量が多いと UI での設定が大変)
✅インストール
Package Manager から Localizaion をインストール

✅使用言語を設定
Project Settings > Localization に言語を追加

Specific Locale Selector の Locale Id と、Project Locale Identifier はデフォルト言語です。
✅ローカライズごとに変更したい画像を登録
Window > Asset Management > Localization Tables

Table Collection は、規模が小さければ1つで構いません。Key を増やしていきましょう。(この名前を後ほど使います)
ローカライズ情報を保存するフォルダーを求められますので、私は Assets/Localize/ にいれておきました。
✅Image と Key をリンクさせる

リンクさせたい Image で 右クリック > Localize を選択すると、Localize Sprite Event が追加されます。

Localized Asset Reference で先ほど作成した Key を設定します。
✅スクリプトで言語を設定
起動時に言語を決定する場合、ファイルが最初にロードされる前に、次のようなコードを書いておきます。
// Addressable 初期化
await Addressables.InitializeAsync().Task;
// ローカライズ初期化
await LocalizationSettings.InitializationOperation.Task;
// 言語を設定(日本語)
var locale = LocalizationSettings.AvailableLocales.GetLocale("ja");
LocalizationSettings.SelectedLocale = locale;
言語("ja")は、Project Settings > Localization で設定した言語の右欄に設定された文字列を使ってください。英語なら "en"、中国語(簡体字)なら "zh-Hans" になります。
Discussion