UGUI Toggle onValueChanged事件统一管理

本文介绍了一个在Unity中优化Toggle监听器的问题解决方法。作者在使用Toggle组件时遇到问题,即在遍历Toggle数组并添加监听器时,所有Toggle的监听器都指向了数组的最后一个元素。通过将监听器的添加过程抽象成单独的方法,成功解决了这一问题,确保每个Toggle都能正确地触发其对应的事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 今天做项目的时候偶然用到这个toggle,卡我半天。

using UnityEngine.EventSystems;
public class UIManager : MonoBehaviour {
public Toggle[] Toggles; //滑块集合
private void Start()
{
    //网上(https://www.jianshu.com/p/f047342993d0)的是这样添加监听的,
    //我试过了,打印出来的item.name 永远是滑块集合的最后一个
    //foreach (var item in Toggles)
    // {
    //    item.onValueChanged.AddListener( ifselect => { if (ifselect) 
    //  OnToggleValueChanged(item); });
    // }

//这是我修改之后的,这样就可以对应的打印出toggle的name,(#‵′)靠
     foreach (var item in Toggles)
     {
          addListener(item);
     }
 }

private void addListener(Toggle item )
    {
        item.onValueChanged.AddListener( ifselect => { if (ifselect)         
        OnToggleValueChanged(item); });
    }
 
// 同一管理Toggle,Toggle发生改变执行相应的事件
private void OnToggleValueChanged(Toggle item)
{
      Debug.Log("--------:"+item.name );
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值