ゲーム制作勉強中!あこがれだったプログラマーに今からなろう!

昔あこがれだったプログラマー。今からでもUnityを勉強してみようと思い立ち、チャレンジ開始! Unity勉強メモや、悪戦苦闘な日々の記録です。

Unityのドロップダウンリストの設定方法

ここ最近は、ブログを書ける進捗すらもないほどに、ずっとTimelineに悩まされてました😅
どうにかこうにか形になってきたので、備忘録も兼ねて、まずはドロップダウンリストについて纏めておこうと思います。

UnityにもUIとしてドロップダウンが搭載されてはいるけれど、使ってみると案外設定が解りにくい。
ドロップダウンを紹介しているサイトは数多くあるけれど、肝心な箇所の説明がなかったり、足りなかったりしたので、
あっちこっちのサイトから情報をかき集めてくる必要があった。

まずは、標準的なドロップダウンリストといえば、こんなイメージだけど

フォントや表示エリアの設定が、それぞれ別のObjectになっている😅

最初に赤矢印の部分の文字のフォントを設定するには、
ヒエラルキーウィンドウからDropdown→LabelのインスペクターでTextを変更してやる。

次に青矢印の部分の文字のフォントを設定するには、
Dropdown→Template→Viewport→Content→Item→Item LabelのインスペクターでTextを変更してやる。

ここで注意しないといけないのは、フォントを大きくしても、表示エリアのサイズは自動的には変わらないので、フォントサイズだけを大きくすると、表示が大変な事になってしまう🤣

表示エリアのサイズを変更するには、また違うObjectのインスペクターから設定を変更する必要がある。
まず、選択エリアの縦幅と横幅。これは、Dropdown自身の幅と高さで良い。(図中、赤と青)
ドロップダウンされて表示されたリストの、1行ごとの高さを設定しているのは、Dropdown→Template→Viewport→Content→Itemの高さ。(図中、黄緑)
ドロップダウンされて表示されたリスト全体の高さは、Dropdown→Templateの高さ(図中、紫)
と、こんな感じで、実にあっちこっちに設定が散らばっていた。😆

そして、忘れてはいけないのが、ドロップダウンをスクリプトで制御するための変数で宣言する型だけど、
テキストがテキストメッシュプロでTextからTMP_Textに変わった様に、テキストメッシュプロに対応したドロップダウンの場合、TMP_Dropdownになる。
これを忘れるとせっかく作ったドロップダウンリストをGetComponentできないので、かなり焦る事になる💦
少なくとも、僕はかなり焦った🤣

ドロップダウンリストの選択が変更されると、OnValueChangedというMonoBehaviourに定義されたイベントが発生する。

これを簡単に利用するには、Dropdown自身のインスペクターにある「値の変更時」を使用して、ボタンにメソッドを登録するのと同じ様に、スクリプト内のメソッドを設定する。

ドロップダウンリストの現在の選択値は、dropdown.valueに格納されるので、
スクリプトで実行されたメソッドで、この値で確認して処理を行う様にする。
これでメニュー選択などや、ゲームの設定画面などの表現の幅がかなり広がりそうだ😊