在本文,你将学到如何将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数据:
测试效果
小技巧
有人问 Toggle 的事件在 Inspector 上怎么添加,其实,也挺简单的:
方案一:
在希望接受这个事件的脚本里写一个带 bool 参数的方法,然后就能在这找到他了
代码:
public void TestFunction(bool value) { }
效果:
注意:
上图不是被一个大大的空隙隔开了么,然后在下面也能看到同一个方法名的选项,不要选他,笔者估计大家很多困惑来自选了它吧~
不要选他
方案二:
直接指向一个 bool 类型的 属性也是可以的,形如:
代码:
public bool TestAttribute{get;set;}
效果:
这也不意外毕竟 属性 实质上是一组 getter setter 方法的组合。
标签:Unity3D、UGUI、Toggle、EventSystem、OnToggleValueChanged、AddListener