【Unity】ドロップダウンの表示テキストを変える

投稿者: | 2021-06-20

ドロップダウンの表示テキストをスクリプトで変えてみました。

ドロップダウンには、3つのオプションに「低い」「普通」「高い」と表示されるようにしました。

ボタンを作って、ドロップダウンの表示テキストを変更するスクリプトを付けた空のゲームオブジェクトをアタッチし、その右のメニューから、表示を変更するメソッドを選択します。

スクリプトでオプションのテキストを変更する

スクリプトでは、各オプションのテキストを翻訳します。

using UnityEngine;
using UnityEngine.UI;

public class ChangeDropdownText : MonoBehaviour
{
    [SerializeField] Dropdown dropdown;
    bool isTranslated;

    // Start is called before the first frame update
    void Start()
    {
        
    }

    public void ChangeText()
    {
        // 日本語にする
        if (isTranslated)
        {
            isTranslated = false;

            // 各オプションの表示テキストを変える
            dropdown.options[0].text = "低い";
            dropdown.options[1].text = "普通";
            dropdown.options[2].text = "高い";

        }
        // 英語にする
        else
        {
            isTranslated = true;

            // 各オプションの表示テキストを変える
            dropdown.options[0].text = "Low";
            dropdown.options[1].text = "Normal";
            dropdown.options[2].text = "High";

        }

    }
}

すると、ドロップダウンを開いたときの表示は変わりましたが、選択中のオプションのテキストはそのままです。

ドロップダウンには、「Caption Text」というプロパティがあり、現在選択中のオプションのテキストが格納されています。

このテキストを選択してインスペクタを見ると、表示が変わっていないことがわかります。

選択中のオプションのテキストを変更する

そこで、スクリプトにドロップダウンの値によって「Caption Text」の文字列を変更する処理を書き足しました。

using UnityEngine;
using UnityEngine.UI;

public class ChangeDropdownText : MonoBehaviour
{
    [SerializeField] Dropdown dropdown;
    bool isTranslated;

    // Start is called before the first frame update
    void Start()
    {
        
    }

    public void ChangeText()
    {
        // 日本語にする
        if (isTranslated)
        {
            isTranslated = false;

            // 各オプションの表示テキストを変える
            dropdown.options[0].text = "低い";
            dropdown.options[1].text = "普通";
            dropdown.options[2].text = "高い";

            // 選択中のオプションのテキストを変える
            switch(dropdown.value)
            {
                case 0:
                    dropdown.captionText.text = "低い";
                    break;
                case 1:
                    dropdown.captionText.text = "普通";
                    break;
                case 2:
                    dropdown.captionText.text = "高い";
                    break;
            }
        }
        // 英語にする
        else
        {
            isTranslated = true;

            // 各オプションの表示テキストを変える
            dropdown.options[0].text = "Low";
            dropdown.options[1].text = "Normal";
            dropdown.options[2].text = "High";

            // 選択中のオプションのテキストを変える
            switch (dropdown.value)
            {
                case 0:
                    dropdown.captionText.text = "Low";
                    break;
                case 1:
                    dropdown.captionText.text = "Normal";
                    break;
                case 2:
                    dropdown.captionText.text = "High";
                    break;
            }
        }

    }
}

これで、選択中のテキストも変わるようになりました。

コメントを残す

メールアドレスが公開されることはありません。