このブログはUnityの初心者向けに、Untiyの機能の使い方、基本のスクリプトファイルの使い方から応用までをご説明しています。中級以上の方に読んでいただきたい内容も随時更新していますので、お時間がある方、検索でここにアクセスされた方はぜひ立ち寄っていってください。
前回の記事、Dropdownツールの活用方法第一弾 の続き、今回はドロップダウンのリスト、つまり選択肢をスクリプトファイルから指定する方法についてご説明します。
下の動画は、その詰め込みすぎた「ファイブボックス 一分間Unity講座 Dropdownの活用方法2」 のショート動画です。ご興味がございましたら、こちらの動画もご参照ください。
コンポーネントとプロパティ
今回スクリプトファイルから変更したいのは、ドロップダウン展開前のタイトルのテキスト、およびドロップダウンの選択肢リストの部分です。
Inspectorで変更のプロパティを確認すると以下の2つです。
- DropDownのDropdownコンポーネント:Optionsプロパティ
- LabelのTextコンポーネント:Textプロパティ
スクリプトファイルの作成
作成済みのコード確認
前回のブログで作成したスクリプトファイルを利用します。スクリプトファイル:DropdownManager.cs
は Canvas にアタッチされて、すでに以下のコードができています。
※先のブログでは変数に [SerializeField]
を指定して、inspectorから取得していますが、下のサンプルではStart関数で初期値を取得しました。
using UnityEngine;
using UnityEngine.UI;
public class DropDownManager : MonoBehaviour
{
Text text; //Textを管理
Dropdown dropdown; //Dropdownを管理
void Start()
{
//textに初期値を代入
text = transform.Find("Text").GetComponent<Text>();
//dropdownに初期値を代入
dropdown = transform.Find("Dropdown").parent.GetComponent<Dropdown>();
}
public void ChangeText() //DropdownのOnvalueChangedにAssign
{
//textの文字をdropdownのoptionsの選択された番号番目にする
text.text = dropdown.options[dropdown.value].text;
}
}
配列の用意
選択肢リストはstring型(文字列型)の配列で用意しておきます。今回はトランプの記号を使用しますが、任意の数の選択肢を指定してください。
string[] option = new string[4] //文字列型の配列を用意し、選択肢を代入
{
"スペード","ハート","ダイヤ","クラブ"
};
テキストとリストの指定
Start関数で初期値の指定を行います。
void Start()
{
//前半記述済み
text = transform.Find("Text").GetComponent<Text>();
dropdown = transform.Find("Dropdown").parent.GetComponent<Dropdown>();
//dropdownの子要素のLabelを探して、テキストを指定
dropdown.transform.Find("Label").GetComponent<Text>().text
= "記号を選択";
//配列optionの要素数だけ繰り返し
for(int i = 0; i < option.Length; i++)
{
//optionsのi番目のテキストを配列のi番目に指定
dropdown.options[i].text = option[i];
}
}
これを起動するだけでタイトルの文字、および選択肢のリストが更新されます。
ファイブボックスでは、スクラッチやUnityの個別指導のオンラインレッスンを行っています。