Unity Dropdown 控件用法
1.下拉框创建出来
你会看见是这个样子的
你想要的肯定不是这个效果, 所以你得修改上面显示的数据
1. 你的数据如果是固定不变你就可以直接在(如下图)修改
这是不写脚本的修改,当然你也可以脚本修改它
2.直接上代码方法
void Start() { AddNames(); UpdateDropdownView(listNames); } //给下拉框动态添加名字 private void AddNames() { string s4 = "东邪"; string s5 = "西毒"; string s6 = "南帝"; string s7 = "北丐"; string s8 = "中神通"; listNames.Add(s4); listNames.Add(s5); listNames.Add(s6); listNames.Add(s7); listNames.Add(s8); } //刷新下拉框显示 private void UpdateDropdownView(List<string> showNames) { //清空下下拉框数据 dropdown.options.Clear(); Dropdown.OptionData tempData; for (int i = 0; i < showNames.Count; i++) { tempData = new Dropdown.OptionData(); tempData.text = showNames[i]; dropdown.options.Add(tempData); } //把第一条数据显示为默认 dropdown.captionText.text = showNames[0]; }
上面就是代码动态添加,根据自己需求使用,这只是修改了显示的数据,你肯定也需要绑定事件来触发效果
下面是绑定事件
void Start() { dropdown.onValueChanged.AddListener(Change); } //给下拉框绑定事件 private void Change(int index) { switch (index) { case 0: Debug.Log("这是黄老邪"); break; case 1: Debug.Log("这是欧阳锋"); break; case 2: Debug.Log("这是一灯大师"); break; case 3: Debug.Log("这是洪七公"); break; case 4: Debug.Log("这是王重阳"); break; default: break; } }
最后是完整代码,可以运行自行查看效果
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class Rodem_rig : MonoBehaviour { public Button exit_btn; public Button queding_btn; public Dropdown dropdown; public List<string> listNames = new List<string>(); // Start is called before the first frame update void Start() { AddNames(); UpdateDropdownView(listNames); dropdown.onValueChanged.AddListener(Change); exit_btn.onClick.AddListener(delegate { Destroy_OBJ(); }); } //给下拉框绑定事件 private void Change(int index) { switch (index) { case 0: // Debug.Log("这是黄老邪"); break; case 1: Debug.Log("这是欧阳锋"); break; case 2: Debug.Log("这是一灯大师"); break; case 3: Debug.Log("这是洪七公"); break; case 4: Debug.Log("这是王重阳"); break; default: break; } } //给下拉框动态添加名字 private void AddNames() { string s4 = "东邪"; string s5 = "西毒"; string s6 = "南帝"; string s7 = "北丐"; string s8 = "中神通"; listNames.Add(s4); listNames.Add(s5); listNames.Add(s6); listNames.Add(s7); listNames.Add(s8); } //刷新下拉框显示 private void UpdateDropdownView(List<string> showNames) { //清空下下拉框数据 dropdown.options.Clear(); Dropdown.OptionData tempData; for (int i = 0; i < showNames.Count; i++) { tempData = new Dropdown.OptionData(); tempData.text = showNames[i]; dropdown.options.Add(tempData); } //把第一条数据显示为默认 dropdown.captionText.text = showNames[0]; } public void Destroy_OBJ() { Destroy(this.gameObject); } }
这是打印效果
按钮触发效果
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class Rodem_rig : MonoBehaviour { public Button exit_btn; public Button queding_btn; public Dropdown dropdown; public List<string> listNames = new List<string>(); public int RW; // Start is called before the first frame update void Start() { AddNames(); UpdateDropdownView(listNames); dropdown.onValueChanged.AddListener(Change); exit_btn.onClick.AddListener(delegate { Destroy_OBJ(); }); //确定按钮 queding_btn.onClick.AddListener(delegate { GameObjecting.instance.IntoThe_Task(RW); Destroy_OBJ(); }); } //给下拉框绑定事件 private void Change(int index) { switch (index) { case 0: RW = index; break; case 1: RW = index; break; case 2: RW = index; break; case 3: RW = index; break; case 4: RW = index; break; case 5: RW = index; break; case 6: RW = index; break; case 7: RW = index; break; case 8: RW = index; break; case 9: RW = index; break; case 10: RW = index; break; case 11: RW = index; break; case 12: RW = index; break; default: break; } } //给下拉框动态添加名字 private void AddNames() { string s4 = "东邪"; string s5 = "西毒"; string s6 = "南帝"; string s7 = "北丐"; string s8 = "中神通"; listNames.Add(s4); listNames.Add(s5); listNames.Add(s6); listNames.Add(s7); listNames.Add(s8); } //刷新下拉框显示 private void UpdateDropdownView(List<string> showNames) { //清空下下拉框数据 dropdown.options.Clear(); Dropdown.OptionData tempData; for (int i = 0; i < showNames.Count; i++) { tempData = new Dropdown.OptionData(); tempData.text = showNames[i]; dropdown.options.Add(tempData); } //把第一条数据显示为默认 dropdown.captionText.text = showNames[0]; } public void Destroy_OBJ() { Destroy(this.gameObject); } }
3.新增一个快速赋值数据的方法
dropdown.AddOptions(showNames);
就不用写上面的for循环赋值了,代码更简便
其他扩展就看自己需求了
喜欢的话点个赞吧,谢谢 0_0