Unity Button监听onclick在StartCoroutine()中的使用

xiaoxiao2021-02-28  98

做一个项目,关于从服务端拉取数据,然后客户端用数据count来实例化Item数量,然后给Item加按钮监听。 这一操作在startCoroutine中执行,出了一个bug,找了一个下午中午找到了原因,但是不知道这是为啥,只好先记录一下待以后考古。 button.onclick.addListner 这个方法里面是一个委托, 在startCoroutine中执行时,在循环中传对象进去最后点击出来的都是最后一个对象。不好理解,上代码。

class Test { public int a; } Button[] ts; // Use this for initialization void Start () { ts = GameObject.FindObjectsOfType<Button>(); for (int i = 0; i < ts.Length; i++) { Test a = new Test() { a = i}; Button btm = ts[i]; btm.onClick.AddListener(() => { Debug.Log(a.a); }); } }

类似于这样一段代码,在普通方法中能点击出0.1.2.3但是在协程中只能出现ts.length

转载请注明原文地址: https://www.6miu.com/read-35784.html

最新回复(0)