LoginSignup
1
0

More than 1 year has passed since last update.

UnityEngine.Localizationをスクリプトから呼ぶ(2)

Last updated at Posted at 2021-12-05

前回はUnityのローカライズイベントが呼ばれたときに文字列を差し替えるというものでしたが、今回はスクリプト中で任意の文字列を表示する、というものになります。
メッセージ中で文章を分岐させるときなどに使用できるのではないかと思います。
また前回と違い、TextMeshProにローカライズ用スクリプトをアタッチする必要はありません。もちろんアタッチされていても問題ありません。

文字列テーブルコレクションは下記のように作成しておきます
image.png

次に、表示するためのUITextを用意します.今回はTextmeshProを使用しました。
image.png

日本語その他の言語を切り替えて表示できるようにするためには、フォントを切り替えておく必要があります。
TMPフォントの場合はFallback設定をしておくのが便利です(動画参照)
image.png

次に、カラのオブジェクトを用意して下記のコードを貼り付けます

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()
    {
    }
}

実行するとこうなります。
image.png

GM_GREETINGで設定したテキストとGM_BYEで設定したテキストが両方表示されているのがわかると思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0