unity UGUI下拉列表中,以TMP_Dropdown为例,当默认值为0时,点击第一个选项,点击事件并不会响应,然而在某些特定情况下,我们需要在DropDown的Value字段值不变化时,点击也会响应事件,这样我们就需要重写TMP_DropDown。

代码如下

using TMPro;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;

public class DBDropDown : TMP_Dropdown, IPointerClickHandler
{
public bool Call = true;//是否开启 点击选项按钮总是回调

protected override void Awake()
{base.Awake();template = transform.Find("Template").GetComponent<RectTransform>();captionText = transform.Find("Label").GetComponent<TMP_Text>();itemText = transform.Find("Template/Viewport/Content/Item/Item Label").GetComponent<TMP_Text>();
}public void MyShow()
{Show();Transform toggleRoot = transform.Find("Dropdown List/Viewport/Content");Toggle[] toggleList = toggleRoot.GetComponentsInChildren<Toggle>(false);for (int i = 0; i < toggleList.Length; i++){Toggle temp = toggleList[i];temp.onValueChanged.RemoveAllListeners();//  temp.isOn = false;int index = i;temp.onValueChanged.AddListener(x => OnSelectItemEx(x,index,temp));}
}public override void OnPointerClick(PointerEventData eventData)
{MyShow();
}public void OnSelectItemEx(bool ison, int index,Toggle  t)
{if (!ison){if (value == index && Call){//     onValueChanged.Invoke(value);t.isOn = true;}captionText.text = options[value].text;return;}captionText.text = options[value].text;if (value == index && Call)onValueChanged.Invoke(value);elsevalue = index;Hide();
}

}
其中Show和Hide函数是显示与隐藏下拉选项的UI

Unity 下拉列表OnValueChanged相关推荐

  1. unity3D 初学者的个人总结

       个人经验总结(预防bug) 1.unity里面导入包时注意路径不要出现中文符号,否则出现 Error while importing package: Couldn't decompress p ...

  2. Unity 开发总结之onValueChanged事件

    Unity UGUI中很多可以改变内容或状态的控件都有onValueChanged事件,虽然绑定该事件的目的相同但具体的触发机制却不尽相同,下面是自己测试总结出的结果 Dropdown,Toggle控 ...

  3. 【Unity游戏开发基础】如何在游戏菜单中实现下拉列表选择画面质量

    [背景] 上一篇我们介绍了如何在菜单中创建调节音量大小的滚动条,现在我再来介绍一个游戏菜单中的常用设置,也就是下拉列表选择画面质量的功能如何实现. [步骤] 首先,在菜单UI Canvas上添加一个下 ...

  4. Unity UGUI Toggle监听onValueChanged

    一直以为下面代码是监听toggle点击的...其实不是,他是用来监听 isOn 值的改变的,真的好坑.. Toggle.onValueChanged.AddListener((bool value) ...

  5. Unity UI 框架

    开源地址: GitHub - NRatel/NRFramework.UI: 基于 Unity UGUI 的 UI 开发框架基于 Unity UGUI 的 UI 开发框架. Contribute to ...

  6. Unity之UGUI详解

    UGUI 文章目录 UGUI 六大基础组件概述 Canvas对象上依附的: Canvas Canvas Scaler Graphic Raycaster RectTransform EventSyst ...

  7. 【Unity】Dropdown下拉按钮的一些基本操作 获取值与添加选项

    自己的老帖子,移植过来 原地址: http://www.manew.com/home.php?mod=space&uid=95681&do=blog&view=me&f ...

  8. Unity 之 UGUI Dropdown组件使用简析

    Unity 之 UGUI Dropdown组件使用简析 官方释义 示例展示 代码操作 官方源码 官方释义 官方文档:https://docs.unity3d.com/Manual/script-Dro ...

  9. Unity 的 UGUI 组件Dropdown简析

    Dropdown设置属性 Unity 会自动帮我们创建一个下拉菜单的模板.并且添加好 Dropdown 组件. 我们需要做的就是,设置我们需要的属性.以及功能即可 将我们的脚本.需要的选择项.UI选项 ...

最新文章

  1. git 常用操作总结
  2. 类和对象—对象特性—const修饰成员函数
  3. 苹果x有android文件夹,iPhone没有文件管理器这点,却让安卓手机羡慕!
  4. 员工需签军令状放弃年终奖?传小米推出特殊激励计划 官方回应...
  5. DSP28335看门狗复位
  6. 无线网络监控服务器怎么,无线监控系统如何安装?
  7. 任正非:无法退休的老人
  8. 485的信号测试软件,RS485通信测试项目中的压力测试方法、原理及基本测试模型...
  9. 通过scheme协议启动app
  10. 到2020年,将有60%的工作会被人工智能取代?
  11. VideoSolo Blu ray Player for Mac(mac蓝光播放器)
  12. 矩阵求和 c语言 简单易懂
  13. 2022-2027年中国肺炎疫苗行业市场运行现状及投资战略研究报告
  14. 【Ubuntu】 解决中文输入问题 --- 安装搜狗拼音输入法
  15. lisp中getkword输入默认_Lisp: 我不是为了 (zhuang) 宏(bi),我只是为了(ke)读(du)取(xing)...
  16. 年终绩效评价填写的意见与参考
  17. 使用ffmpeg视频切片并加密和视频AES-128加密后播放
  18. Python 使用 win32com 模块对 word 文件进行操作
  19. python机器人编程教程入门_机器人操作系统(ROS)入门必备:机器人编程一学就会...
  20. license控制服务器修改时期,license.dat授权替换方式

热门文章

  1. 将一个文件夹拖入MyEclipse的时候,提示destination folder must be accessible
  2. 教你分析快递揽收后,第二条物流是否超过12小时
  3. nmbd samba中文
  4. 为什么被证明“拖后腿”的苹果Mini手机,仍然还会再次发布新款?
  5. Deep Representation Learning for Trajectory Similarity Computation
  6. 虚拟化桌面设备输入法
  7. linux vmware文件互传,Linux与Windows文件互传(VMWare)
  8. 绿卡日记:2020-11-20
  9. 3秒钟解决windows字符间距变大,输入字母间距变大问题
  10. macOS_Catalina_10.15.7_19H15可引导可虚拟机安装的纯净版苹果OS系统ISO镜像安装包免费下载