在本文,你將學(xué)到如何將UGUI Toggle的onValueChanged事件進(jìn)行統(tǒng)一管理。
代碼塊:
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發(fā)生改變執(zhí)行相應(yīng)的事件
private void OnToggleValueChanged(Toggle item)
{
switch (item.name)
{
case "01":
Debug.Log("第一:"+item.name );
break;
case "02":
Debug.Log("第二:" + item.name );
break;
}
}
}
Debug數(shù)據(jù):
測(cè)試效果
小技巧
有人問(wèn) Toggle 的事件在 Inspector 上怎么添加,其實(shí),也挺簡(jiǎn)單的:
方案一:
在希望接受這個(gè)事件的腳本里寫(xiě)一個(gè)帶 bool 參數(shù)的方法,然后就能在這找到他了
代碼:
public void TestFunction(bool value) { }
效果:
注意:
上圖不是被一個(gè)大大的空隙隔開(kāi)了么,然后在下面也能看到同一個(gè)方法名的選項(xiàng),不要選他,筆者估計(jì)大家很多困惑來(lái)自選了它吧~
不要選他
方案二:
直接指向一個(gè) bool 類型的 屬性也是可以的,形如:
代碼:
public bool TestAttribute{get;set;}
效果:
這也不意外畢竟 屬性 實(shí)質(zhì)上是一組 getter setter 方法的組合。
標(biāo)簽:Unity3D、UGUI、Toggle、EventSystem、OnToggleValueChanged、AddListener