この記事について

この記事は私がゲーム制作・学習等で学んだ知識を元にTMP_Dropdownの使い方をわかりやすく説明していきます。

この記事で学べること

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

TMP_Dropdownとは?

TMP_Dropdown は Unity の TextMeshPro(TMP)版のドロップダウンUI です。
通常の Dropdown コンポーネントに比べて、より高品質なテキスト表示が可能になります。

特徴

  • テキストのレンダリング品質が高い
    → アンチエイリアスが効いており、拡大縮小しても文字がきれい。
  • リッチテキスト対応
    → 色変更、太字、斜体などを柔軟に表現可能。

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

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

① Hierarchy から追加

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

② Dropdownの構成要素 標準のTMP_Dropdownには、以下の子オブジェクトがあります:

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

スクリプトでDropdown(ドロップダウン)を制御

スクリプトではusing TMPro;を追加し、TMP_Dropdown型で操作します。valueは0から始まる選択番号、表示文字はoptions[value].textです。選択肢が0件のときは参照しないようにしてください。

選択された値(value)を取得

Dropdown(ドロップダウン)の番号、値取得は以下のサイトを参考にしてください。

選択肢を追加・削除

Dropdown(ドロップダウン)のoptionの追加・削除は以下のサイトを参考にしてください。

Dropdown(ドロップダウン)のカスタマイズ

フォントやサイズの変更

LabelやItem LabelのTextMeshProを変更すると、フォントやサイズを調整できる。

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

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

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

  1. DropdownのTemplateを展開
  2. Template → Viewport → Content → Item → Item BackgroundのImageを変更
  3. リスト全体の背景はTemplateのImageを変更

開いたときの高さを変更

・ 開いたリストの表示範囲は、[Dropdown] → [Template]のRect Transform → Heightで調整します。
・ 1項目の高さは[Template] → [Viewport] → [Content] → [Item]のRect Transformで調整します。
・ Scroll RectはTemplateに付いているコンポーネントです。Hierarchy内の子オブジェクト名ではありません。Contentの高さは、リストを開く際に項目数に応じて調整されます。

よくあるエラーと解決策

Dropdown(ドロップダウン)の選択肢が変更されない

・ optionsの内容を直接変更した後は、RefreshShownValue()で選択中の文字と画像を更新します。開いたリストをその場で作り直す処理ではないため、リストを閉じてから変更し、再度開いて確認してください。

myDropdown.RefreshShownValue();

Dropdown(ドロップダウン)の項目を変更しても反映されない

・ 変更後にRefreshShownValue()を実行 

・ リスト全体を入れ替える場合はClearOptions()で全削除してからAddOptions()で再追加。文字だけを直す場合はoptions[index].textを変更し、RefreshShownValue()を呼び出します。

Dropdown(ドロップダウン)が開かない

・ TemplateのRectTransformが適切に設定されているか確認

・ Dropdown のInteractableがONになっているか確認

まとめ

・ Dropdownはリストから1つの選択肢を選べるUIコンポーネント
・ valueを取得すれば選択された番号(0始まり)を取得可能
・ options.Add()で選択肢をスクリプトから追加できる
・ デザインやフォントを変更してカスタマイズ可能

参考:Unity公式 TMP_Dropdown API/Dropdownのテンプレート構成