Unity UGUI的Dropdown(下拉菜单)组件的介绍及使用
Unity UGUI的Dropdown(下拉菜单)组件的介绍及使用
1. 什么是Dropdown组件?
Dropdown(下拉菜单)是Unity UGUI中的一个常用组件,用于在用户点击或选择时显示一个下拉菜单,提供多个选项供用户选择。
2. Dropdown组件的工作原理
Dropdown组件由两部分组成:一个可点击的按钮和一个下拉菜单。当用户点击按钮时,下拉菜单会展开,显示所有选项。用户可以通过点击选项来进行选择。
3. Dropdown组件的常用属性
- Options:下拉菜单中的选项列表。
- Caption Text:按钮上显示的文本。
- Template:下拉菜单的模板。
- Item Text:下拉菜单中选项的文本。
- On Value Changed:当选择的值发生变化时触发的事件。
4. Dropdown组件的常用函数
- ClearOptions():清空下拉菜单中的选项。
- AddOptions(List options):向下拉菜单中添加选项。
- SetValueWithoutNotify(int value):设置当前选择的值,但不触发事件。
5. 示例代码
示例1:创建一个简单的下拉菜单
using UnityEngine;
using UnityEngine.UI;
public class DropdownExample : MonoBehaviour
{
public Dropdown dropdown;
void Start()
{
dropdown.ClearOptions();
dropdown.AddOptions(new List<string> { "Option 1", "Option 2", "Option 3" });
}
}
操作步骤:
- 创建一个空物体,并将Dropdown组件添加到该物体上。
- 将DropdownExample脚本添加到该物体上。
- 在Inspector面板中,将Dropdown组件的引用拖拽到DropdownExample脚本的dropdown字段上。
- 运行游戏,下拉菜单中将显示"Option 1"、"Option 2"和"Option 3"三个选项。
注意事项:
- 在Start函数中添加选项,确保在游戏开始时下拉菜单已经初始化。
示例2:获取当前选择的值
using UnityEngine;
using UnityEngine.UI;
public class DropdownExample : MonoBehaviour
{
public Dropdown dropdown;
void Start()
{
dropdown.ClearOptions();
dropdown.AddOptions(new List<string> { "Option 1", "Option 2", "Option 3" });
}
public void OnDropdownValueChanged(int value)
{
Debug.Log("Selected option: " + dropdown.options[value].text);
}
}
操作步骤:
- 创建一个空物体,并将Dropdown组件添加到该物体上。
- 将DropdownExample脚本添加到该物体上。
- 在Inspector面板中,将Dropdown组件的引用拖拽到DropdownExample脚本的dropdown字段上。
- 在DropdownExample脚本中,创建一个公共方法OnDropdownValueChanged,并将其绑定到Dropdown组件的On Value Changed事件上。
- 运行游戏,选择下拉菜单中的选项,控制台将输出所选选项的文本。
注意事项:
- OnDropdownValueChanged方法的参数value表示当前选择的索引。
示例3:动态添加选项
using UnityEngine;
using UnityEngine.UI;
public class DropdownExample : MonoBehaviour
{
public Dropdown dropdown;
public InputField inputField;
void Start()
{
dropdown.ClearOptions();
dropdown.AddOptions(new List<string> { "Option 1", "Option 2", "Option 3" });
}
public void AddOption()
{
string newOption = inputField.text;
dropdown.options.Add(new Dropdown.OptionData(newOption));
dropdown.RefreshShownValue();
}
}
操作步骤:
- 创建一个空物体,并将Dropdown组件添加到该物体上。
- 将DropdownExample脚本添加到该物体上。
- 在Inspector面板中,将Dropdown组件的引用拖拽到DropdownExample脚本的dropdown字段上。
- 创建一个InputField组件,并将其引用拖拽到DropdownExample脚本的inputField字段上。
- 在DropdownExample脚本中,创建一个公共方法AddOption,并将其绑定到一个按钮的OnClick事件上。
- 运行游戏,输入一个新选项的文本,点击按钮,下拉菜单中将添加一个新选项。
注意事项:
- AddOption方法通过inputField获取新选项的文本,并使用dropdown.options.Add方法添加新选项。
- 添加新选项后,需要调用dropdown.RefreshShownValue方法刷新下拉菜单的显示。
示例4:设置默认选项
using UnityEngine;
using UnityEngine.UI;
public class DropdownExample : MonoBehaviour
{
public Dropdown dropdown;
void Start()
{
dropdown.ClearOptions();
dropdown.AddOptions(new List<string> { "Option 1", "Option 2", "Option 3" });
dropdown.SetValueWithoutNotify(1);
}
}
操作步骤:
- 创建一个空物体,并将Dropdown组件添加到该物体上。
- 将DropdownExample脚本添加到该物体上。
- 在Inspector面板中,将Dropdown组件的引用拖拽到DropdownExample脚本的dropdown字段上。
- 在Start函数中,使用dropdown.SetValueWithoutNotify方法设置默认选项的索引。
- 运行游戏,下拉菜单中将默认选择第二个选项。
注意事项:
- SetValueWithoutNotify方法用于设置当前选择的值,但不触发On Value Changed事件。
示例5:自定义下拉菜单模板
using UnityEngine;
using UnityEngine.UI;
public class DropdownExample : MonoBehaviour
{
public Dropdown dropdown;
public GameObject customTemplate;
void Start()
{
dropdown.ClearOptions();
dropdown.AddOptions(new List<string> { "Option 1", "Option 2", "Option 3" });
dropdown.template = customTemplate.transform as RectTransform;
}
}
操作步骤:
- 创建一个空物体,并将Dropdown组件添加到该物体上。
- 创建一个空物体作为自定义模板,设置其布局和样式。
- 将DropdownExample脚本添加到第一个物体上。
- 在Inspector面板中,将Dropdown组件的引用拖拽到DropdownExample脚本的dropdown字段上。
- 将自定义模板的引用拖拽到DropdownExample脚本的customTemplate字段上。
- 运行游戏,下拉菜单将使用自定义模板进行显示。
注意事项:
- 自定义模板需要是一个RectTransform组件。
参考资料
- Unity官方文档:Dropdown
Unity UGUI的Dropdown(下拉菜单)组件的介绍及使用的更多相关文章
- 详解Bootstrap下拉菜单组件
bootstrap框架中的下拉菜单组件是一个独立的组件,根据不同的版本,他对应的文件: less 对应的源码文件为:dropdowns.less sass对应的源码文件为:_dropdowns.scs ...
- JS列表的下拉菜单组件(仿美化控件select)
JS列表的下拉菜单组件(仿美化控件select) 2014-01-23 23:51 by 龙恩0707, 1101 阅读, 6 评论, 收藏, 编辑 今天是农历23 也是小年,在这祝福大家新年快乐!今 ...
- 巧用CSS3 :target 伪类制作Dropdown下拉菜单(无JS)
:target 是CSS3 中新增的一个伪类,用以匹配当前页面的URI中某个标志符的目标元素(比如说当前页面URL下添加#comment就会定位到id=“comment”的位置,俗称锚).CSS3 为 ...
- dropdown下拉菜单
<!--声明方式的下拉菜单:三个要点--> <!--1 外围容器用dropdown包裹--> <!--2 内部点击事件data-toggle--> <!--3 ...
- 巧用CSS3:target 伪类制作Dropdown下拉菜单(无JS)
原文链接:http://devework.com/css3-target-dropdown.html :target 是CSS3 中新增的一个伪类,用以匹配当前页面的URI中某个标志符的目标元素(比如 ...
- bootstrap的下拉菜单组件与导航条
前期准备:bootstrap的css文件和js文件先引入 Bootstrap 组件-拉下菜单(class+js) 下拉菜单必需三级结构 <div class="dropdown&quo ...
- Dropdown 下拉菜单
将动作或菜单折叠到下拉菜单中. 基础用法 移动到下拉菜单上,展开更多操作. 通过组件slot来设置下拉触发的元素以及需要通过具名slot为dropdown 来设置下拉菜单.默认情况下,下拉按钮只要ho ...
- 微信小程序 - 下拉菜单组件
使用: 1.导入组件 2.使用组件 3.数据传入 4. 获取数据(通过同步缓存,获取“choose”)- 发送到后端 点击下载:小程序-下拉组件.
- Java Swing实战(二)下拉菜单组件JComboBox及其事件监听
接下来给"数据源配置"面板添加下拉框. /** * @author: lishuai * @date: 2018/11/26 13:51 */ public class Weimi ...
- Element-UI ( Dropdow )下拉菜单组件command传输对象
通过 :command绑定对象数据,handleCommand方法处理数据 template <div v-for="(item, index) in FlyWarningList&q ...
随机推荐
- javascript中的错误类型
javascript 中的错误类型: SyntaxError TypeError ReferenceError RangeError URLError Error SyntaxError 语法错误 / ...
- 【操作日志】如何在一个SpringBoot+Mybatis的项目中设计一个自定义ChangeLog记录?
设计一个业务改动信息时的自定义记录,例如新增.修改.删除数据等.并且记录的规则可以通过配置的方式控制.大家需要根据各自业务场景参考,欢迎讨论.伪代码如下: 实体类: @TableName(" ...
- java开发学习框架
Java基础 1.1. Java简介与安装 1.2. Java基本语法 1.3. 数据类型与变量 1.4. 运算符与表达式 1.5. 流程控制(分支与循环) 1.6. 数组 面向对象编程 2.1. 类 ...
- 文心一言 VS 讯飞星火 VS chatgpt (26)-- 算法导论5.1 1题
一.证明:假设在过程 HIRE-ASSISTANT 的第 4 行中,我们总能决定哪一个应聘者最佳.则意味着我们知道应聘者排名的全部次序. 文心一言: 证明: 假设在过程 HIRE-ASSISTANT ...
- 记录一些不知道哪里冒出来的 idea(可能已存在)
2022/7/4 给定一张 \(n\) 个点的有权无向图和 \(m\) 个关键点,求其生成树满足每个点到离它最近的关键点的距离之和最小. 输出该生成树边权和. 加强一下: 给出一个 \(N\) 个点 ...
- Microsoft R 和 Open Source R,哪一个才最适合你?
由于微信不允许外部链接,你需要点击文章尾部左下角的 "阅读原文",才能访问文中链接. R 是一个开源统计软件,在分析领域普及的非常快. 在过去几年中,无论业务规模如何,很多公司都采 ...
- 逍遥自在学C语言 | break-循环的中断与跳转
前言 在C语言中,break语句是一种控制流语句,它用于终止当前所在的循环结构(for.while.do-while)或者switch语句,从而跳出循环或者结束switch语句的执行. 一.人物简介 ...
- 使用containerd从0搭建k8s(kubernetes)集群
准备环境 准备两台服务器节点,如果需要安装虚拟机,可以参考<wmware和centos安装过程> 机器名 IP 角色 CPU 内存 centos01 192.168.109.130 mas ...
- ChatGPT+Mermaid自然语言流程图形化产出小试
ChatGPT+Mermaid语言实现技术概念可视化 本文旨在介绍如何使用ChatGPT和Mermaid语言生成流程图的技术.在现代软件开发中,流程图是一种重要的工具,用于可视化和呈现各种流程和结构. ...
- 8. 自定义映射resultMap
在 Mybatis 中,resultType 和 resultMap 都用于定义查询结果的映射关系.它们的使用场景如下: resultType resultType 用于指定返回结果的数据类型,通 ...