Button[] btnList;
btnList长度为3.
运行后点击每个按钮Debug的结果都是3…
for(int i=0; i<btnList.Length; i++)
{
btnList[i].onClick.AddListener(delegate() {
OnButtonClick(i);
}
);
}
void OnButtonClick(int indxe)
{
Debug.Log(index.ToString());
}
原因:
for循环比AddListenen先执行完毕,因此传过去的i值永远为btnList的长度3。
解决方案:
定义临时变量tmp存储i的值,然后把tmp传给点击事件而不是把i传给点击事件。
参考:我所理解的委托和匿名函数