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" });
}
}

操作步骤

  1. 创建一个空物体,并将Dropdown组件添加到该物体上。
  2. 将DropdownExample脚本添加到该物体上。
  3. 在Inspector面板中,将Dropdown组件的引用拖拽到DropdownExample脚本的dropdown字段上。
  4. 运行游戏,下拉菜单中将显示"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);
}
}

操作步骤

  1. 创建一个空物体,并将Dropdown组件添加到该物体上。
  2. 将DropdownExample脚本添加到该物体上。
  3. 在Inspector面板中,将Dropdown组件的引用拖拽到DropdownExample脚本的dropdown字段上。
  4. 在DropdownExample脚本中,创建一个公共方法OnDropdownValueChanged,并将其绑定到Dropdown组件的On Value Changed事件上。
  5. 运行游戏,选择下拉菜单中的选项,控制台将输出所选选项的文本。

注意事项

  • 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();
}
}

操作步骤

  1. 创建一个空物体,并将Dropdown组件添加到该物体上。
  2. 将DropdownExample脚本添加到该物体上。
  3. 在Inspector面板中,将Dropdown组件的引用拖拽到DropdownExample脚本的dropdown字段上。
  4. 创建一个InputField组件,并将其引用拖拽到DropdownExample脚本的inputField字段上。
  5. 在DropdownExample脚本中,创建一个公共方法AddOption,并将其绑定到一个按钮的OnClick事件上。
  6. 运行游戏,输入一个新选项的文本,点击按钮,下拉菜单中将添加一个新选项。

注意事项

  • 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);
}
}

操作步骤

  1. 创建一个空物体,并将Dropdown组件添加到该物体上。
  2. 将DropdownExample脚本添加到该物体上。
  3. 在Inspector面板中,将Dropdown组件的引用拖拽到DropdownExample脚本的dropdown字段上。
  4. 在Start函数中,使用dropdown.SetValueWithoutNotify方法设置默认选项的索引。
  5. 运行游戏,下拉菜单中将默认选择第二个选项。

注意事项

  • 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;
}
}

操作步骤

  1. 创建一个空物体,并将Dropdown组件添加到该物体上。
  2. 创建一个空物体作为自定义模板,设置其布局和样式。
  3. 将DropdownExample脚本添加到第一个物体上。
  4. 在Inspector面板中,将Dropdown组件的引用拖拽到DropdownExample脚本的dropdown字段上。
  5. 将自定义模板的引用拖拽到DropdownExample脚本的customTemplate字段上。
  6. 运行游戏,下拉菜单将使用自定义模板进行显示。

注意事项

  • 自定义模板需要是一个RectTransform组件。

参考资料

Unity UGUI的Dropdown(下拉菜单)组件的介绍及使用的更多相关文章

  1. 详解Bootstrap下拉菜单组件

    bootstrap框架中的下拉菜单组件是一个独立的组件,根据不同的版本,他对应的文件: less 对应的源码文件为:dropdowns.less sass对应的源码文件为:_dropdowns.scs ...

  2. JS列表的下拉菜单组件(仿美化控件select)

    JS列表的下拉菜单组件(仿美化控件select) 2014-01-23 23:51 by 龙恩0707, 1101 阅读, 6 评论, 收藏, 编辑 今天是农历23 也是小年,在这祝福大家新年快乐!今 ...

  3. 巧用CSS3 :target 伪类制作Dropdown下拉菜单(无JS)

    :target 是CSS3 中新增的一个伪类,用以匹配当前页面的URI中某个标志符的目标元素(比如说当前页面URL下添加#comment就会定位到id=“comment”的位置,俗称锚).CSS3 为 ...

  4. dropdown下拉菜单

    <!--声明方式的下拉菜单:三个要点--> <!--1 外围容器用dropdown包裹--> <!--2 内部点击事件data-toggle--> <!--3 ...

  5. 巧用CSS3:target 伪类制作Dropdown下拉菜单(无JS)

    原文链接:http://devework.com/css3-target-dropdown.html :target 是CSS3 中新增的一个伪类,用以匹配当前页面的URI中某个标志符的目标元素(比如 ...

  6. bootstrap的下拉菜单组件与导航条

    前期准备:bootstrap的css文件和js文件先引入 Bootstrap 组件-拉下菜单(class+js) 下拉菜单必需三级结构 <div class="dropdown&quo ...

  7. Dropdown 下拉菜单

    将动作或菜单折叠到下拉菜单中. 基础用法 移动到下拉菜单上,展开更多操作. 通过组件slot来设置下拉触发的元素以及需要通过具名slot为dropdown 来设置下拉菜单.默认情况下,下拉按钮只要ho ...

  8. 微信小程序 - 下拉菜单组件

    使用: 1.导入组件 2.使用组件 3.数据传入 4. 获取数据(通过同步缓存,获取“choose”)- 发送到后端 点击下载:小程序-下拉组件.

  9. Java Swing实战(二)下拉菜单组件JComboBox及其事件监听

    接下来给"数据源配置"面板添加下拉框. /** * @author: lishuai * @date: 2018/11/26 13:51 */ public class Weimi ...

  10. Element-UI ( Dropdow )下拉菜单组件command传输对象

    通过 :command绑定对象数据,handleCommand方法处理数据 template <div v-for="(item, index) in FlyWarningList&q ...

随机推荐

  1. macbook苹果m1芯片训练机器学习、深度学习模型,resnet101在mnist手写数字识别上做加速,torch.device("mps")

    apple的m1芯片比以往cpu芯片在机器学习加速上听说有15倍的提升,也就是可以使用apple mac训练深度学习pytorch模型!!!惊呆了 安装apple m1芯片版本的pytorch 然后使 ...

  2. 资源高效搜索方法,你 Get 到了吗?

      随手转发给好友和朋友圈  编辑:办公小通 百度搜索谁都会,但是搜出来的资料往往良莠不齐.搜索速度是快了,但是还要花大量的时间去筛选. 通过下面的两个最常用的栗子,小通强烈推荐大家用高级搜索. 高级 ...

  3. Linux系统基础知识与自学方法

    Linux系统基础知识与自学方法 大部分非计算机相关的朋友也经常使用电脑,所以我们频繁接触的是Windows系统.关于这个系统的评价不一,一部分人觉得简洁快捷,一部分人觉得问题(病毒.弹窗)多多,总之 ...

  4. python学习笔记:继承与超类

    与java类似,继承的出现是为了提高代码的重复利用率,避免多次输入同样的代码.而超类就是java中的父类. 1.继承 要指定超类,可在定义类时,在class语句中的类名后加上超类名 基类就是超类,派生 ...

  5. 即构SDK支持对焦、变焦、曝光调整,让直播细节清晰呈现

    对焦.变焦.曝光调整,摄影爱好者对这三个术语一定不陌生. 对焦是指通过相机对焦机构变动物距和相距的位置,使被拍物成像清晰的过程:变焦指的是在望远拍摄时放大远方物体,并使之清晰成像 :曝光调整是一种曝光 ...

  6. Parallel 与 ConcurrentBag<T> 这对儿黄金搭档

    〇.前言 日常开发中经常会遇到数据统计,特别是关于报表的项目.数据处理的效率和准确度当然是首要关注点. 本文主要介绍,如何通过 Parallel 来并行处理数据,并组合 ConcurrentBag&l ...

  7. Centos查看挂载目录并挂载

    一.概述 本次已Centos7作为示例 挂载系统没有挂载的磁盘,可以分如下几步 1.查看系统哪些盘未挂载 2.给未挂载的磁盘进行分区 3.格式化磁盘并向磁盘中写入系统文件 4.挂载磁盘 5.设置开机自 ...

  8. Java并发篇:6个必备的Java并发面试种子题目

    线程创建和生命周期 线程的创建和生命周期涉及到线程的产生.执行和结束过程.让我们继续深入探索这个主题: 线程的创建方式有多种,你可以选择适合你场景的方式: 继承Thread类: 创建一个类,继承自Th ...

  9. 学习LXC(Linux 容器)技术

    安装LXC.LXD.zfs 测试机器为ubuntu sudo apt-get install lxc lxd zfsutils-linux -y 创建LXD的zfs存储池 sudo lxd init ...

  10. Linux 概念:u-boot

    U-Boot介绍 参考:https://baike.baidu.com/item/U-Boot/10377075 参考:https://u-boot.readthedocs.io/en/latest/ ...