我有一个精心设计的菜单脚本,根据您在游戏菜单中点击的内容,它会遍历广告资源的插槽,并查看您的广告资源中是否有某个特定对象。
但它没有按计划运作。
如果正在搜索的对象位于数组的第一个元素中,则for循环正在进行,因为一切都可以正常工作。 视觉指南:http://imgur.com/e1cr8bX
如果库存数组中所有正在搜索的库中的插槽都填充了其他对象,那么一切都会正常工作。 视觉指南:http://imgur.com/aVNw8JE
但是如果导致被搜索对象的其中一个槽中没有对象,那么循环似乎停止并且没有任何反应。 视觉指南:http://imgur.com/qYO3mPJ
如果插槽返回null,我已尝试添加if语句来执行某些操作。像Debug.Log和j ++这样的东西。但是什么也没做。
这是脚本:
void Update () {
//Loop through inventory slots.
for (int j = 0; j < itemstacks.Length; j++)
{
if (playerInventory.itemStacks[j].stackSize == 0)
{
playerInventory.itemStacks[j] = null;
}
//Loop through shop slots.
for (int i = 0; i < slots.Length; i++)
{
if (IsMouseOverSlot(i))
{
if (CraftMenuINVScript.CraftMenuStacks[i] != null)
{
if (CraftMenuINVScript.CraftMenuStacks[i].item.name == "WalkWay")
{
if (itemstacks[j].item.name == "Log")
{
if (playerInventory.itemStacks[j].stackSize >= 2)
{
if (Input.GetMouseButtonDown(0))
{
Debug.Log("Craft");
playerInventory.AddItem(CraftMenuINVScript.CraftMenuStacks[i].item.name, 1);
playerInventory.itemStacks[j].stackSize -= 2;
}
}
}
else if (itemstacks[j].item.name == null)
{
Debug.Log("yo");
}
}
}
else
{
Debug.Log("No item");
}
}
}
RenderShopSlots();
}
}
我确定自己是个白痴,脸上有些东西正好盯着我,但我似乎无法解决这个问题。我可以想到解决方法,比如必须将库存对象放在某些位置以便事情发生。但我宁愿让它以这种方式工作。
此外,我现在只使用了几个月的c#所以如果我犯了一些愚蠢的noobie错误,请不要烧得太厉害。
感谢您的帮助。