【Unity】TMP_Dropdownの選択肢をスクリプトで追加・削除する方法
この記事について
この記事ではDropdownの選択肢をスクリプトで制御する方法が学べます。
この記事でわかること
- dropdown.AddOptions(List<string>) で複数の選択肢を一括追加
- dropdown.options.Add(new TMP_Dropdown.OptionData(“テキスト”)) で個別追加
- dropdown.ClearOptions() で全削除
- dropdown.options.RemoveAt(index) で指定削除も可能
TMP_Dropdownとは?
TMP_Dropdownについては以下の記事を参考にしてください。
選択肢をスクリプトで追加・削除
TMP_Dropdownの準備
まずはヒエラルキーで右クリックをしてDropdownを1つ用意します。
・「右クリック」→「UI」→「Dropdown – TextMeshPro」
次にスクリプトを作成して先ほどのDropdown にアタッチしてください。

選択肢を一括追加する方法
Dropdownの選択肢は「AddOptions」で追加することができます。今回はListを用いて一括で追加していきます。
using System.Collections.Generic;
using TMPro;
using UnityEngine;
public class Dropdown_Add_Delete : MonoBehaviour
{
[SerializeField] private TMP_Dropdown testDropdown;
void Start()
{
testDropdown = this.GetComponent<TMP_Dropdown>();
List<string> options = new List<string>() { "Easy", "Normal", "Hard" };
testDropdown.AddOptions(options);
testDropdown.RefreshShownValue(); // 表示を更新
}
}実行してみると、Inspectorのリストに追加され、Dropdownから選べるようになります。
AddOptions()は既存の選択肢の末尾に追加します。初期のOption A・B・Cを残したくない場合は、AddOptions()の前にClearOptions()を呼び出してください。
選択肢を個別に追加する方法
選択肢を個別に追加する方法も載せておきます。既存のリストに1つだけ選択肢を足す場合に便利。
TMP_Dropdownで使う型はTMP_Dropdown.OptionDataです。通常のUnity UIのDropdown.OptionDataとは別の型なので、混同しないようにしてください。optionsを直接変更した後はRefreshShownValue()で表示を更新します。
using System.Collections.Generic;
using TMPro;
using UnityEngine;
public class Dropdown_Add_Delete : MonoBehaviour
{
[SerializeField] private TMP_Dropdown testDropdown;
void Start()
{
testDropdown = this.GetComponent<TMP_Dropdown>();
testDropdown.options.Add(new TMP_Dropdown.OptionData("New Option"));
testDropdown.RefreshShownValue(); // 表示を更新
}
}選択肢を削除する方法(全削除・指定削除)
全削除
全削除については「ClearOptions」を書くだけで削除できます。
testDropdown.ClearOptions();指定削除
指定削除については「RemoveAt(Number)」で削除できますが、番号は0から始まります。複数削除すると後ろの番号がずれるため、同じリストから削除する場合は大きい番号から順に削除しましょう。
RemoveAt(index)には、0以上・options.Count未満の番号を指定してください。存在しない番号を渡すと例外になります。下の例は初期の3項目が残っているTMP_DropdownにEasy・Normal・Hardを追加し、その後で先頭の3項目を削除する例です。
using System.Collections.Generic;
using TMPro;
using UnityEngine;
public class Dropdown_Add_Delete : MonoBehaviour
{
[SerializeField] private TMP_Dropdown testDropdown;
void Start()
{
testDropdown = this.GetComponent<TMP_Dropdown>();
List<string> options = new List<string>() { "Easy", "Normal", "Hard" };
testDropdown.AddOptions(options);
testDropdown.options.RemoveAt(2); // 3番目を削除
testDropdown.options.RemoveAt(1); // 2番目を削除
testDropdown.options.RemoveAt(0); // 1番目を削除
testDropdown.value = 0; // 削除後の先頭を選択
testDropdown.RefreshShownValue(); // 表示を更新
}
}実行してみると、初期のoptionA,B,Cを削除できました。
まとめ
- AddOptions(List<string>) → 複数追加
- options.Add(new TMP_Dropdown.OptionData(“テキスト”)) → 個別追加
- ClearOptions() → 全削除
- options.RemoveAt(index) → 指定削除
参考:Unity公式 TMP_Dropdown API/TMP_Dropdown.OptionData

サイトアイコン-2-150x150.png)