我理解错误的含义,但我不明白它发生的原因:
missionItems = new MissionItem[50];
for (int i = 0; i < 50; i++)
{
missionItems[i] = Instantiate(missionItem);
missionItems[i].transform.GetChild(2).GetChild(1).GetComponent<Button>().onClick.AddListener(() => ClickPrize(missionItems[i]));
}
错误发誓AddListener(() => ClickPrize(missionItems[i])),但我不明白如果它是在填充数组时创建的,它怎么能越界。
PS该错误仅在单击按钮时发生,而不是在创建时发生。
在循环
for中,您需要创建一个变量index,然后将其分配给i. 现在您已经在 lambda 中捕获,i因此,当您按下按钮时,它被称为ClickPrize(missionItems[50]),因为i = 50在循环结束时。像这样编辑您的代码: