前回はUnityのローカライズイベントが呼ばれたときに文字列を差し替えるというものでしたが、今回はスクリプト中で任意の文字列を表示する、というものになります。
メッセージ中で文章を分岐させるときなどに使用できるのではないかと思います。
また前回と違い、TextMeshProにローカライズ用スクリプトをアタッチする必要はありません。もちろんアタッチされていても問題ありません。
次に、表示するためのUITextを用意します.今回はTextmeshProを使用しました。
日本語その他の言語を切り替えて表示できるようにするためには、フォントを切り替えておく必要があります。
TMPフォントの場合はFallback設定をしておくのが便利です(動画参照)
次に、カラのオブジェクトを用意して下記のコードを貼り付けます
using UnityEngine;
using TMPro;
public class LocaleTest : MonoBehaviour
{
[SerializeField] TMPro.TMP_Text m_text;
[SerializeField] UnityEngine.Localization.LocalizedStringTable m_table;
// Start is called before the first frame update
void Start()
{
UnityEngine.Localization.Tables.StringTable keyValuePairs = m_table.GetTable();
string str = keyValuePairs["GM_GREETING"].Value;
m_text.text = string.Format(str, "World") + "!!";
m_text.text += $"\n{keyValuePairs["GM_BYE"].Value}";
}
// Update is called once per frame
void Update()
{
}
}
GM_GREETINGで設定したテキストとGM_BYEで設定したテキストが両方表示されているのがわかると思います。