翻车了!!!一个小例子带你了解闭包。
事故现场:
场景:6个button,上方1个text。点击button,text会显示button上的数字。
closure1.gif
代码如下:
//在unity里面赋值
public List<Button> buttons = new List<Button>();
public Text text;
void Start () {
AddFun();
}
//给6个button添加点击事件
void AddFun()
{
for (int i = 0; i < buttons.Count; i++)
{
buttons[i].onClick.AddListener(() => Fun(i + 1));
}
}
//点击事件:输出形参的值
void Fun(int i)
{
text.text = i.ToString();
print(i);
}
for循环button添加onclidk函数导致点击所有的button显示同样的莫名数字7。
事故原因:
闭包。标题那么长跟闭包有什么关系?因为上述问题会引