Unity/UIDropdown
提供: 初心者エンジニアの簡易メモ
Dropdown追加方法
- UI/Dropdownを追加
- Dropdownを選択肢Inspectorのoptionsから選択項目を編集する
Dropdown選択値取得サンプル
using UnityEngine; using UnityEngine.UI; public class Example : MonoBehaviour { Dropdown m_Dropdown; public Text m_Text; void Start() { //Fetch the Dropdown GameObject m_Dropdown = GetComponent<Dropdown>(); //Add listener for when the value of the Dropdown changes, to take action m_Dropdown.onValueChanged.AddListener(delegate { DropdownValueChanged(m_Dropdown); }); //Initialise the Text to say the first value of the Dropdown m_Text.text = "First Value : " + m_Dropdown.value; } //Ouput the new value of the Dropdown into Text void DropdownValueChanged(Dropdown change) { m_Text.text = "New Value : " + change.value; } }
参考:https://docs.unity3d.com/ja/current/ScriptReference/UI.Dropdown-onValueChanged.html
選択項目の高さが狭い場合
templates/viewportのscaleのyを1から3とかにする
Dropdownの選択項目追加
using UnityEngine; using UnityEngine.UI; using System.Collections.Generic; public class Example : MonoBehaviour { //The list of messages for the Dropdown List<Dropdown.OptionData> m_Messages = new List<Dropdown.OptionData>(); //This is the Dropdown Dropdown m_Dropdown; string m_MyString; int m_Index; void Start() { //Fetch the Dropdown GameObject the script is attached to m_Dropdown = GetComponent<Dropdown>(); //Clear the old options of the Dropdown menu m_Dropdown.ClearOptions(); List<string> names = new List<string> { "Option 1", "Option 2" }; foreach (string name in names) { Dropdown.OptionData m_NewData = new Dropdown.OptionData(); m_NewData.text = name; m_Messages.Add(m_NewData); } //Take each entry in the message List foreach (Dropdown.OptionData message in m_Messages) { //Add each entry to the Dropdown m_Dropdown.options.Add(message); //Make the index equal to the total number of entries m_Index = m_Messages.Count - 1; } } }
参考:https://docs.unity3d.com/ja/current/ScriptReference/UI.Dropdown-options.html
ListデータをDropdownへ反映
List<string> cars = new List<string>(); string car = "police"; Dropdown carDropdown; void Start() { carDropdown = GameObject.Find("/Canvas/CarDropdown").GetComponent<Dropdown>(); carDropdown.onValueChanged.AddListener(delegate { CarDropdownValueChanged(carDropdown); }); } void InitDropdown() { cars.Add("taxi"); cars.Add("police"); List<Dropdown.OptionData> optionMessages = new List<Dropdown.OptionData>(); Dropdown optionDropdown = GameObject.Find("CarDropdown").GetComponent<Dropdown>(); optionDropdown.ClearOptions(); foreach (string car in cars) { Dropdown.OptionData optionData; optionData = new Dropdown.OptionData(); optionData.text = car; optionMessages.Add(optionData); } foreach (Dropdown.OptionData message in optionMessages) { optionDropdown.options.Add(message); } optionDropdown.value = cars.IndexOf(car); GameObject.Find("CarDropdown/Label").GetComponent<Text>().text = cars[optionDropdown.value].ToString(); } void CarDropdownValueChanged(Dropdown change) { car = cars[change.value]; GameObject.Find("CarDropdown/Label").GetComponent<Text>().text = cars[optionDropdown.value].ToString(); }