[很久前的一个Note,不知道现在的Unity Dropdown是否已经支持该特性]

Unity UGUI是开源的: https://bitbucket.org/Unity-Technologies/ui

可以下载到UI的代码阅读并改写

下面的DropdownEx类在Dropdown基础上,增加一个m_AlwaysCallback 变量,勾选后每次点击都会触发回调

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine.Events;
using UnityEngine.EventSystems;
using UnityEngine.UI.CoroutineTween;
using UnityEngine.UI;
using UnityEngine;public class DropdownEx : Dropdown
{public bool m_AlwaysCallback = false;public void Show(){base.Show();Transform toggleRoot = transform.FindChild("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;temp.onValueChanged.AddListener(x => OnSelectItemEx(temp));}}public override void OnPointerClick(PointerEventData eventData){Show();}public void OnSelectItemEx(Toggle toggle){if (!toggle.isOn){toggle.isOn = true;return;}int selectedIndex = -1;Transform tr = toggle.transform;Transform parent = tr.parent;for (int i = 0; i < parent.childCount; i++){if (parent.GetChild(i) == tr){// Subtract one to account for template child.selectedIndex = i - 1;break;}}if (selectedIndex < 0)return;if (value == selectedIndex && m_AlwaysCallback)onValueChanged.Invoke(value);elsevalue = selectedIndex;Hide();}}

补充下Editor脚本

using UnityEngine.UI;
using UnityEditor;
using UnityEditor.UI;[CustomEditor(typeof(DropdownEx), true)]
[CanEditMultipleObjects]
public class DropdownExEditor : DropdownEditor
{SerializedProperty m_AlwaysCallback;protected override void OnEnable(){base.OnEnable();m_AlwaysCallback = serializedObject.FindProperty("m_AlwaysCallback");}public override void OnInspectorGUI(){base.OnInspectorGUI();EditorGUILayout.PropertyField(m_AlwaysCallback);serializedObject.ApplyModifiedProperties();}
}

转载于:https://www.cnblogs.com/wmalloc/p/7234319.html

改写Unity DropDown 支持多次点击同一选项均回调相关推荐

  1. Unity 2021创建2D休闲点击器游戏视频教程

    Unity 2021创建2D休闲点击器游戏视频教程 Learn how to create a 2D Idle Clicker Game in Unity 2021 了解如何在Unity 2021中创 ...

  2. QComboBox 鼠标点击触发 选项更新

    QComboBox 鼠标点击触发选项更新,不重写QComboBox类. 让 ui 中的 QComboBox 控件有点击交互,QComboBox 控件其实就是一个下拉框样式的控件,这个下拉框提供的交互是 ...

  3. 支持的vCenter Server High Availability选项(2096800)

    最近更新时间: 2017年8月16日分类:最佳做法 订阅  病征 免责声明:本文为支持vCenter Server的高可用性选项(1024051)的翻译版本尽管我们会不断努力为本文提供最佳翻译版本,但 ...

  4. 点击菜单选项,右侧主体区新增子界面(Tab)的实现

    今天是2019年小年后一天,还有三天回家过年. 今天记录一下一种前端页面的效果的实现,这种效果很常见,一般用于网站后台系统的前端页面.一般后台系统会分为顶部导航栏,左边的菜单栏和右边的主体区.有一种效 ...

  5. 鼠标在用了一段之后偶然发现以给特别慢的速度移动鼠标,会在移动到可点击的选项按钮附近明显的卡住问题。

    鼠标在用了一段之后偶然发现以给特别慢的速度移动鼠标,会在移动到可点击的选项按钮附近明显的卡住问题. 买的罗技的G pro,近期重装了一遍系统偶然发现这个问题,已经严重影响了鼠标的使用,制表制图的时候很 ...

  6. Mac Dropbox 点击“首选项”无反应 没反应怎么办?

    Mac Dropbox 点击"首选项"无反应 没反应怎么办? macOS 下解决新安装 Dropbox 后无法设置代理,点击"首选项"无反应怎么办? 搜索一下 ...

  7. element ui upload组件文件上传一次 后,不论是上传成功之后修改文件再上传还是上传失败重新上传,再次点击上传均无反应。

    问题: Element UI Upload 组件文件上传一次 后,不论是上传成功之后修改文件再上传还是上传失败重新上传,再次点击上传均无反应. 原因: 第一次上传文件后,浏览器还保存着我们已经上传的文 ...

  8. 【Unity】XPS模型导入Unity(支持VRChat)

    所需要的资源 (百度云:链接:https://pan.baidu.com/s/1kyCs_HLUJ5j02ENbHgvzCQ 提取码:1234 ) 可以使用该方法,将xps模型制作成VRChat的模型 ...

  9. unity dropdown 界面设计

    摆界面的时候 遇到这种界面 需要下拉列表框  记录一下经过 使用unity里自带的 dropdown  在Hierarchy界面创建一个Dropdown 这个是基础这里就不多讲了 最终功能:点击下拉列 ...

最新文章

  1. ceph auth get_服装百科|get到羽绒服的“绒”干货,你就能做好设计
  2. php小程序登录code无效,微信小程序出现“invalid code”怎么办
  3. java填空题答案_JAVA求填空题答案
  4. FlexPaper不能跨服务器加载远程文件解决办法
  5. MACOS远程访问树莓派桌面
  6. linux还原windows,双系统如何删除Linux,恢复Windows从  MBR引导启动?
  7. 画个火山图,标记下基因的名字
  8. 并发-阻塞队列源码分析
  9. SAP License:SAP中的默认帐户与密码应用
  10. 量化中需留意的坑之二
  11. java arraylist add时默认调用tostring_java中如何调用toString命名的方法?
  12. 什么是交叉编译?个人对交叉编译的理解
  13. Drools规则引擎简介
  14. 二维码墓碑的技术探讨
  15. Unity-WebGL遇到的各种坑(一)
  16. VC++连接wifi功能(有密码)源代码
  17. C#WebApi下载文件
  18. BLE Mesh (9) —— Mesh beacons
  19. 最强nba体验服显示服务器正在停机,最强NBA体验服
  20. 错误代码 missing-signature 错误原因: 缺少签名参数-自查方案

热门文章

  1. java编程里的values怎么使用,详解Java编程中super关键字的用法
  2. tablepc是什么平板电脑_54位平板电脑充电柜长什么样?安和力
  3. 安装 mysql-8.0.23-winx64
  4. Spring Boot系列四 Spring @Value 属性注入使用总结一
  5. Windows10下jupyter notebook无法打开,如何解决?
  6. java adt mac_Mac下搭建Eclipse Android开发环境
  7. vue中引入swiper
  8. c语言数码管编写程序,跪求单片机0~99数码管显示用C语言编写的程序
  9. CSS学习17之动画
  10. 从Java多线程可见性谈Happens-Before原则