Unity入門

【Unity】TMP_Dropdownの選択肢をスクリプトで追加・削除する方法

この記事について

この記事ではDropdownの選択肢をスクリプトで制御する方法が学べます。

この記事でわかること

  • dropdown.AddOptions(List<string>) で複数の選択肢を一括追加
  • dropdown.options.Add(new 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から選べるようになります。

選択肢を個別に追加する方法

選択肢を個別に追加する方法も載せておきます。既存のリストに1つだけ選択肢を足す場合に便利。

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 Dropdown.OptionData("New Option"));
      testDropdown.RefreshShownValue(); // 表示を更新
    }
}

選択肢を削除する方法(全削除・指定削除)

全削除

全削除については「ClearOptions」を書くだけで削除できます。

testDropdown.ClearOptions();

指定削除

指定削除については「RemoveAt(Number)」で削除できますが、もし複数個削除する場合は小さい番号から削除していくときは番号に注意しましょう。

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.RefreshShownValue(); // 表示を更新
    }
}

実行してみると、初期のoptionA,B,Cを削除できました。

まとめ

  • AddOptions(List<string>) → 複数追加
  • options.Add(new OptionData(“テキスト”)) → 個別追加
  • ClearOptions() → 全削除
  • options.RemoveAt(index) → 指定削除