unity toggle和togglegroup问题
今天在用ugui做二级菜单的时候发现一个问题。
问题描述:有AB两组toggle,共用同一个togglegroup,当A或者B中任意一toggle的isOn=true时,setactive(false)另外一组toggle。常理来讲,如果被false的那组toggle中包含isOn=true的toggle,togglegroup会给他关掉,但实际上并没有。
最后找到unity的一个帖子有一位网友提供了一个解决方法,做了一个扩展的toggle,下面是代码,最下面是帖子地址。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class ToggleEx : Toggle{private struct Group{public HashSet<ToggleEx> onToggles;public HashSet<ToggleEx> offToggles;}private static Dictionary<ToggleGroup, Group> __groups;private bool __isOn;private ToggleGroup __group;protected override void Awake(){base.Awake();__isOn = isOn;ToggleGroup group = base.group;if (group != null){__group = group;__Add();}if (onValueChanged == null)onValueChanged = new ToggleEvent();onValueChanged.AddListener(__Update);}protected override void OnEnable(){if (!__isOn && __group != null){Group group;if (__groups != null && __groups.TryGetValue(__group, out group) && group.onToggles != null){foreach (ToggleEx toggle in group.onToggles)__group.RegisterToggle(toggle);}}base.OnEnable();}protected override void OnDisable(){if (__isOn && __group != null){Group group;if (__groups != null && __groups.TryGetValue(__group, out group) && group.offToggles != null){foreach (ToggleEx toggle in group.offToggles)__group.UnregisterToggle(toggle);}}base.OnDisable();}protected override void OnDestroy(){__Remove();base.OnDestroy();}private void __Add(){if (__group == null)return;if (__groups == null)__groups = new Dictionary<ToggleGroup, Group>();Group group;__groups.TryGetValue(__group, out group);if (__isOn){if (group.onToggles == null)group.onToggles = new HashSet<ToggleEx>();group.onToggles.Add(this);__groups[__group] = group;}else{if (group.offToggles == null)group.offToggles = new HashSet<ToggleEx>();group.offToggles.Add(this);__groups[__group] = group;}}private void __Remove(){if (__group == null)return;if (__groups == null)__groups = new Dictionary<ToggleGroup, Group>();Group group;__groups.TryGetValue(__group, out group);if (__isOn){if (group.onToggles != null)group.onToggles.Remove(this);__groups[__group] = group;}else{if (group.offToggles != null)group.offToggles.Remove(this);__groups[__group] = group;}}private void __Update(bool value){__Remove();__isOn = value;__group = group;__Add();}}
帖子地址,点我访问
unity toggle和togglegroup问题相关推荐
- Unity Toggle组制作菜单及菜单栏移动和二级菜单实现!
Unity - Toggle组制作菜单及菜单栏移动和二级菜单实现! 一:效果一 二:效果二 三:效果三 四:此Demo下载 ------> 本文提供详细教程 记录遇到的难点并帮助同行的朋友们 坚 ...
- UIGU源码分析6:Toggle 和 ToggleGroup
源码6:Toggle 和 ToggleGroup Toggle public class Toggle : Selectable, IPointerClickHandler, ISubmitHandl ...
- UGUI源码分析:开关组件Toggle与ToggleGroup
系列 UGUI源码分析系列总览 相关前置: UGUI EventSystem源码分析 UGUI源码分析:Selectable交互组件的基类 文章目录 系列 Toggle Toggle组件属性介绍 初始 ...
- 新版unity toggle组件汉化名字
提一个新版unity的改变的点: 新版unity中如果使用汉化包,则toggle翻译为切换(???) 我被这玩意坑了十分钟,小心踩坑
- unity Toggle Groud
Toggle 框 要建一个空物体加上Toggle Groud 组件,然后把Toggle 按钮的组选成该Groud.
- Unity Toggle组件踩坑使用笔记
项目中需要用到排序功能,两种排序,一个型号,一个是评分,当用户点击型号或者评分的时候,物品列表中的物品需要重新排序,有点类似游戏中的背包,希望武器按照品质或者强化等级排序.最简单的方法是制作两个But ...
- Unity 各个系统
一:Animator: 动画事件:写在text中,读写 动画名字+路径+动画时长+动画触发事件 动画:勾选此选项后,动画会跳抖动,动画一致播放,播放不完整.自己一直传递自己,一般此选项不勾选. 动画平 ...
- Unity多选题功能开发
文章目录 前言 一.场景物体 二.脚本 总结 前言 新手一直不知道该怎么做一个多选题开发模块!对于文件流又不够熟悉,就只能在场景中做题目更换和分数统计. 提示:以下是本篇文章正文内容,下面案例可供参考 ...
- unity内置图片查看器
原作者链接github #if UNITY_EDITORusing UnityEngine; using UnityEditor; using System.Collections.Generic; ...
最新文章
- MapInfo常见数据格式
- Caffe 训练时loss等于87.3365且保持不变的原因及解决方法
- 经典java程序员的面试题及答案
- 别小看不起眼的电阻,里面大有学问!
- linux查看登录服务器的ip历史记录,通过登陆IP记录Linux所有用户登录所操作日志的方法...
- 怎么样用 Python 玩转 Redis !过来 咱一起聊聊!
- delphi xe 10.4 开发 APP
- 计算机无法进入增值税认证平台,增值税认证勾选平台打不开怎么办
- 计算机一级试题库app,计算机一级题库app
- altium09怎么查元器件_Altium Designer中怎么查找元器件
- php判断信用卡,PHP函数验证信用卡卡号是否正确
- PDFlib-6.0.3p1-Windows] license key 算法分析
- XML文件约束之DTD详解
- Spring加载时报错处理
- 温暖的奢侈,当手机遇到机器人
- Pandas之十二速查手册
- 微信小程序云开发如何实现上传视频 以及 图片
- AP6212WIFI蓝牙模块移植过程
- python将汉字转为拼音字母_科学网—[转载]python中文汉字转拼音 - 陈明杰的博文...
- linux 汇编 读取软盘,学习x86汇编语言7 使用INT13读取软盘数据
热门文章
- SQL SERVER-开启xp_cmdshell
- linux红帽7修改时间,RedHat Linux 修改时区
- C++动态创建多维数组
- linux照片备份软件,照片视频备份软件下载-照片视频备份云相册安卓版v1.0.1-Linux公社...
- 停车场管理系统程序设计c语言数据结构,数据结构(C语言)—停车场管理系统...
- LeetCode 1240 铺瓷砖
- day04-乐优商城项目搭建
- 华为WATCH Buds耳机连接不稳定出现听歌卡顿或断音应该怎么办?
- read函数阻塞还是非阻塞
- 酷乐天气开发记录总结2