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数据:

测试效果

小技巧

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

public void TestFunction(bool value) { }

效果:



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


不要选他

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

public bool TestAttribute{get;set;}

效果:



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


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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容