我正在尝试在Unity中创建一个游戏内商店。我在运行时通过以下ShopItem
循环从for
数组创建项目选择界面:
for (int i = 0; i < buttons.Length; ++i)
{
if (shopItems[i].cost > settings.Coins)
buttons[i].interactable = false;
else
buttons[i].onClick.AddListener(() => ShowBuyConfirmation(i));
}
问题在于添加侦听器。当我按下游戏中的任何按钮时,都会得到IndexOutOfRangeException
。经过调查,我发现函数ShowBuyConfirmation()
总是用值shopItems.Length
调用,这显然是错误的。我不理解的是为什么ShowBuyConfirmation()
不会被使用适当的按钮索引调用,而是被值shopItems.Length
所代替?
数组buttons
和shopItems
的长度始终相同,因此可以互换使用。