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); } }
这是打印效果
按钮触发效果

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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器