UnityのDropdown(ドロップダウン)は、選択肢の中から1つを選べるUIコンポーネント です。
- ゲームの設定画面(解像度、言語選択 など)
- キャラクターやアイテムの選択
- UIのカスタマイズ(スキン、テーマ変更 など)
しかし、「スクリプトで項目を追加・削除したい」「選択された値を取得したい」「ドロップダウンのデザインを変更したい」など、実装方法が分かりにくいこともあります。
この記事では、Dropdownの基本からスクリプト制御、カスタマイズ、よくあるエラーと解決策 まで詳しく解説します!
この記事で学べること
- UnityのDropdownの基本的な使い方
- スクリプトで項目を追加・削除・変更する方法
- 選択された値を取得・変更する方法
- ドロップダウンのデザインをカスタマイズする方法
- よくあるエラーと解決策
UnityのDropdown(ドロップダウン)の使い方
Dropdown(ドロップダウン)の構成と追加方法
① Hierarchy から追加
・ [Hierarchie] → [右クリック] → [UI] → [Dropdown – TextMeshPro] を選択
・ Dropdownオブジェクトがシーンに追加される
② Dropdownの構成要素 Dropdownは以下のコンポーネントで構成される:
※ Canvas、TextMeshProについて気になる方はこちらを参考にしてください。
- Label(選択中の項目を表示)
- Arrow(開閉ボタン)
- Template(選択肢リストのテンプレート)

スクリプトでDropdown(ドロップダウン)を制御
選択された値(value)を取得
Dropdown(ドロップダウン)の現在の選択肢はvalueで取得できる。
➡︎ 現在選択されているインデックス(番号)とテキストを取得可能
using TMPro;
using UnityEngine;
public class DropdownExample : MonoBehaviour
{
public TMP_Dropdown myDropdown; // TMP_Dropdown コンポーネントの参照
private void Start()
{
// ゲーム開始時に現在選択されている値を取得
GetSelectedValue();
}
// 現在選択されているドロップダウンの値を取得するメソッド
public void GetSelectedValue()
{
int index = myDropdown.value; // 選択されている項目のインデックスを取得
string selectedText = myDropdown.options[index].text; // インデックスに対応するテキストを取得
Debug.Log("選択された値: " + selectedText); // コンソールに選択された値を表示
}
}
選択肢をスクリプトで追加
options.Add()を使うと、新しい選択肢を動的に追加できる。
➡︎ スクリプトでドロップダウンの選択肢を追加可能
using UnityEngine;
using TMPro;
public class DropdownManager : MonoBehaviour
{
public TMP_Dropdown myDropdown;
void Start()
{
myDropdown.options.Add(new TMP_Dropdown.OptionData("新しい項目"));
myDropdown.RefreshShownValue(); // UIを更新
}
}
選択肢を削除
options.Clear()を使うと、すべての選択肢を削除できる。
➡︎ スクリプトで選択肢をリセットできる
myDropdown.options.Clear();
myDropdown.RefreshShownValue();
初期値を設定
スクリプトでvalueを変更すると、選択中の項目を変更できる。
➡︎ 設定画面のデフォルト値を指定できる
myDropdown.value = 2; // インデックス2の項目を選択
myDropdown.RefreshShownValue();
Dropdown(ドロップダウン)のカスタマイズ
フォントやサイズの変更
LabelやItem LabelのTextMeshProを変更すると、フォントやサイズを調整できる。
・ フォントを変更するにはLabelとItem LabelのFont Assetを変更
・ サイズを変更するにはFont Sizeを調整
選択肢の背景や枠線を変更
➡︎ デザインをカスタムして見た目を変更可能
- DropdownのTemplateを展開
- Viewport → Content → Item BackgroundのImageを変更
- TemplateのBackgroundを変更
開いたときの高さを変更
・ [Dropdown] → [Template] → [ScrollRect] → [Viewport] → [Content] のHeightを変更
よくあるエラーと解決策
Dropdown(ドロップダウン)の選択肢が変更されない
・ RefreshShownValue()を呼び出してUIを更新
myDropdown.RefreshShownValue();
Dropdown(ドロップダウン)の項目を変更しても反映されない
・ 変更後にRefreshShownValue()を実行
・ options.Clear()でリセット後、選択肢を再追加
Dropdown(ドロップダウン)が開かない
・ TemplateのRectTransformが適切に設定されているか確認
・ Dropdown のInteractableがONになっているか確認
まとめ
・ Dropdownはリストから1つの選択肢を選べるUIコンポーネント
・ valueを取得すれば選択された値を取得可能
・ options.Add()で選択肢をスクリプトから追加できる
・ デザインやフォントを変更してカスタマイズ可能