【Unity】LocalizationでAsset Tableのキーを動的に変える
Unityの公式の機能、Localization。ローカライズが簡単にできます。
私は存在を知るまで自作でローカライズを実装していたんですが、若干めんどくさいところがあるのと、公式はエディタ上で簡単に切り替えできるという点でLocalizationに替えました。
まぁ詳しいところは↓の記事などが詳しく解説していただいているのでそれを見ていただくとして、
Unity公式のローカライズ(多言語対応)機能 Localization【Unity】
問題は
スクリプト上で画像を切り替えるとき、ローカライズのセットごと切り替える方法が見つからない!
ということでした。
ヴェルタでいうと、エリア名の画像をエリアが変わったら変えたいのに、画像を差し替えるだけじゃローカライズが反映されないということです。
文字だと割と見つかるんですけどね、画像だとなーんにも見つからない。
でもこちらの記事と公式のスクリプトリファレンスを参考にして試行錯誤したらなんとかなったので一応ここに記しておきます。
でも素人がやったやつなので、使用する場合は自己責任で
1.まず、上のusingがあるところに using UnityEngine.Localization.Components; を入れます。
2.SerializeFieldでLocalizeSpriteEvent _localizedSpriteEvent とやるなりしてLocalizeSpriteEventの変数を作っておきます。
3.切り替えをしたいところで_localizedSpriteEvent.AssetReference.TableEntryReference = "差し替えたい画像のキー名";と入れます。