做一个项目,关于从服务端拉取数据,然后客户端用数据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