Unity Button監聽onclick在StartCoroutine()中的使用
阿新 • • 發佈:2018-11-22
做一個專案,關於從服務端拉取資料,然後客戶端用資料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