踩坑记录:
直接用i的值报错,索引超出范围,试了下i-1,点击按钮输出的都是同样数据。
public void AddBtns移动测试()
{
for (int i = 0; i < TheUI绑定指令设置.btns移动测试按钮.Count; i++)
{
TheUI绑定指令设置.btns移动测试按钮[i].onClick.AddListener(() => OnBtn测试(TheUI绑定指令设置.inputField移动控制[i].text));
}
}
问问Fitten Code吧。
原来是:监听器内部使用了闭包(Lambda表达式)来引用 i
变量和 TheUI绑定指令设置.inputField移动控制
所构成的数组。这会导致一个常见的问题:当点击按钮时,由于闭包的存在,实际执行的 OnBtn测试
方法所获取的 i
变量值可能不是您期望的值,而是 for
循环结束时的最终值。
修改后。
public void AddBtns移动测试()
{
for (int i = 0; i < TheUI绑定指令设置.btns移动测试按钮.Count; i++)
{
int index = i; // 创建临时变量存储当前循环的 i 值
TheUI绑定指令设置.btns移动测试按钮[i].onClick.AddListener(() => OnBtn测试(TheUI绑定指令设置.inputField移动控制[index].text));
}
}
AI真好用。