UGUI Toggle onValueChanged事件统一管理

在本文,你将学到如何将UGUI Toggle的onValueChanged事件进行统一管理。

代码块:

using UnityEngine.EventSystems;
public class UIManager : MonoBehaviour {
public Toggle[] Toggles; //滑块集合
private void Start()
{
     foreach (var item in Toggles)
     {
          item.onValueChanged.AddListener( ifselect => { if (ifselect) OnToggleValueChanged(item); });
     }
 }
 
// 同一管理Toggle,Toggle发生改变执行相应的事件
private void OnToggleValueChanged(Toggle item)
{
       switch (item.name)
        {
            case "01":
                Debug.Log("第一:"+item.name );
                break;
            case "02":
                Debug.Log("第二:" + item.name );
                break;
       }
    }
}

Debug数据:

UGUI Toggle onValueChanged事件统一管理_第1张图片
测试效果

小技巧

有人问 Toggle 的事件在 Inspector 上怎么添加,其实,也挺简单的:
方案一:
在希望接受这个事件的脚本里写一个带 bool 参数的方法,然后就能在这找到他了
代码:

public void TestFunction(bool value) { }

效果:


UGUI Toggle onValueChanged事件统一管理_第2张图片

注意:
上图不是被一个大大的空隙隔开了么,然后在下面也能看到同一个方法名的选项,不要选他,笔者估计大家很多困惑来自选了它吧~


不要选他

方案二:
直接指向一个 bool 类型的 属性也是可以的,形如:
代码:

public bool TestAttribute{get;set;}

效果:


UGUI Toggle onValueChanged事件统一管理_第3张图片

这也不意外毕竟 属性 实质上是一组 getter setter 方法的组合。


标签:Unity3D、UGUI、Toggle、EventSystem、OnToggleValueChanged、AddListener

你可能感兴趣的:(UGUI Toggle onValueChanged事件统一管理)