首页 > 编程语言 > 详细

Unity 循环里给按钮添加绑定事件

时间:2021-07-10 16:01:13      阅读:19      评论:0      收藏:0      [点我收藏+]

问题

先看一下简单例子:

using UnityEngine;
using UnityEngine.UI;

public class TestClass : MonoBehaviour
{
    public Button[] Btn = new Button[3];

    private void ButtonListenSetUp()
    {
        for(int i = 0; i < Btn.Length; i++)
	    Btn[i].onClick.AddListener(() => { Debug.Log((i + 1).ToString()); });
    }
}

输出结果

这是一个非常简单的例子,看着也没什么问题,
可当点击按钮时不管哪一个都是输出:‘3’

分析

你以为的绑定过程:
技术分享图片

实际绑定过程:
技术分享图片

解决方案

解决办法当然也有
在每次循环内部定义一个局部变量

private void ButtonListenSetUp()
    {
        for(int i = 0; i < Btn.Length; i++)
        {
            int temp = i;
            Btn[temp].onClick.AddListener(() => { Debug.Log((temp + 1).ToString()); });
        }
    }

Unity 循环里给按钮添加绑定事件

原文:https://www.cnblogs.com/godshadow/p/14993656.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!