この記事について
この記事ではTMP_Dropdownでの選択値をスクリプトで制御する方法が学べます。
この記事でわかること
- dropdown.value で現在の選択インデックスを取得できる
- dropdown.options[index].text で表示テキストを取得できる
- onValueChanged.AddListener() を使えば選択が変わったときにイベントを処理できる
TMP_Dropdownとは?
TMP_Dropdownについては以下の記事を参考にしてください。
選択値をスクリプトで取得
TMP_Dropdownの準備
まずはヒエラルキーで右クリックをしてDropdownを1つ用意します。
・「右クリック」→「UI」→「Dropdown – TextMeshPro」
次にスクリプトを作成して先ほどのDropdown にアタッチしてください。

選択中の値を取得する方法(value / text)
Dropdownにはオプションに番号とテキスト情報が含まれています。
番号の取得には「.value」、テキストの取得には「.options[index].text」を使用します。
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class Dropdown_GetValue : MonoBehaviour
{
[SerializeField] private TMP_Dropdown testDropdown;
void Start()
{
testDropdown = this.GetComponent<TMP_Dropdown>();
int index = testDropdown.value; // 選択されている番号(0始まり)
string selectedText = testDropdown.options[index].text; // 選択されているテキスト
Debug.Log("Index: " + index);
Debug.Log("Text: " + selectedText);
}
}
実行してみると、Start時に番号とテキストを取得できました。番号は0から開始のようですね。
onValueChangedでイベント処理する方法
Dropdownの値を取得する方法としてUpdateで常に監視でもいいですが、変更された時に呼ばれる関数「onValueChanged」を今回は使用していきます。
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class Dropdown_GetValue : MonoBehaviour
{
[SerializeField] private TMP_Dropdown testDropdown;
void Start()
{
testDropdown = this.GetComponent<TMP_Dropdown>();
testDropdown.onValueChanged.AddListener(OnDropdownChanged);
}
private void OnDropdownChanged(int index)
{
string selectedText = testDropdown.options[index].text;
Debug.Log(index + " / " + selectedText);
}
}
実行してみると、確定したときにスクリプトが実行されましたね。デバッグもみやすいためこちらの方が良さそうですね。
まとめ
- dropdown.value → 選択番号を取得
- dropdown.options[index].text → 選択テキストを取得
- dropdown.onValueChanged.AddListener → 選択変更イベントを処理