今天在用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