🦁

[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