Unity入門

【Unity】Dropdownの使い方 | スクリプト、値(value)を取得、サイズの変更

UnityのDropdown(ドロップダウン)は、選択肢の中から1つを選べるUIコンポーネント です。

  • ゲームの設定画面(解像度、言語選択 など)
  • キャラクターやアイテムの選択
  • UIのカスタマイズ(スキン、テーマ変更 など)

しかし、「スクリプトで項目を追加・削除したい」「選択された値を取得したい」「ドロップダウンのデザインを変更したい」など、実装方法が分かりにくいこともあります。

この記事では、Dropdownの基本からスクリプト制御、カスタマイズ、よくあるエラーと解決策 まで詳しく解説します!

この記事で学べること

  • UnityのDropdownの基本的な使い方
  • スクリプトで項目を追加・削除・変更する方法
  • 選択された値を取得・変更する方法
  • ドロップダウンのデザインをカスタマイズする方法
  • よくあるエラーと解決策

UnityのDropdown(ドロップダウン)の使い方

Dropdown(ドロップダウン)の構成と追加方法

① Hierarchy から追加

・ [Hierarchie] → [右クリック] → [UI] → [Dropdown – TextMeshPro] を選択
・ Dropdownオブジェクトがシーンに追加される

Dropdownの構成要素 Dropdownは以下のコンポーネントで構成される:

※ Canvas、TextMeshProについて気になる方はこちらを参考にしてください。

  • Label(選択中の項目を表示)
  • Arrow(開閉ボタン)
  • Template(選択肢リストのテンプレート)
Unity Dropdownのコンポーネントの画像

スクリプトで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(ドロップダウン)のカスタマイズ

フォントやサイズの変更

LabelItem LabelTextMeshProを変更すると、フォントやサイズを調整できる。

・ フォントを変更するにはLabelとItem LabelのFont Assetを変更
・ サイズを変更するにはFont Sizeを調整

選択肢の背景や枠線を変更

➡︎ デザインをカスタムして見た目を変更可能

  1. DropdownのTemplateを展開
  2. Viewport → Content → Item BackgroundのImageを変更
  3. 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()で選択肢をスクリプトから追加できる
・ デザインやフォントを変更してカスタマイズ可能