UnityのUIにドロップダウン(TextMeshPro)というものがあります。
こんな感じのやつ
Unityのドロップダウンも、上のものと同様に、選択肢の一番目のものがはじめに表示されている仕様なのですが、それを
「メニュー」という表示があって、それを押すと選択肢が現れるようにしたいなと思いました。
インスペクターをいじってどうにかなると楽だったのですが、現時点(私が使っているUnityのバージョン2020.3.14f1)ではそういった機能がなく、コードを書くしかないようです。以下に書いたコードを載せます。
- 「menu」というのは私のTMP_Dropdownのオブジェクト名なのでお好みのものに変更できます。
- 「Update」ではなく「OnGUI」でもできましたが、最初に選択肢が表示されてから「メニュー」の文字に切り替わる感じだったので、少し負荷が高そうですが「Update」を採用しました(ちなみに「Start」だと「メニュー」の文字は表示されず、選択肢の一番目が表示されました)。
- 「SerializeField」などはなしで「this.captionText.text=”メニュー”;」とできないかと思い試してみましたが、「error CS1061」が出ました。GetComponentを使えばきちんと取得できそうですが、それなら「SerializeField」で直接指定した方が分かりやすい気がしたのでこの方法にしました。
上のコードを書いたC#スクリプトをTextMeshProのドロップダウンオブジェクトにアタッチします。
インスペクターの「SerializeField」にはそのドロップダウンオブジェクト自身をアタッチします。
それからゲームビューで確認すると以下のようなドロップダウンになっているはずです。
という訳で「Unityのドロップダウン(TextMeshPro)でプレースホルダ的なものを表示する」、上記の方法が最善かどうかは分からないのですが、日本語での情報がほとんど見当たらなかったので、一応ここに載せておきます。どなたかのご参考になれば幸いです。
folder Web関連