大家好,我只是想知道我的代码有什么问题。它可以添加具有堆栈的第一项,但停止添加具有堆栈的第二项。请帮助
void AddItems ()
{
Item itemToAdd = itemDatabase.items[0];
if (IsInInventory(itemToAdd))
{
for (int i = 0; i < inventoryItems.Count; i++)
{
if (inventoryItems[i].item == itemToAdd )
{
if (inventoryItems[i].item.isStackable)
{
if (inventoryItems[i].stackSize != inventoryItems[i].item.stackSize)
{
inventoryItems[i].stackSize++;
break;
}
}
}
else if (inventoryItems[i].item == itemToAdd && inventoryItems[i].stackSize > itemToAdd.stackSize)
{
AddItem(itemToAdd);
}
}
}
else
{
AddItem(itemToAdd);
}
}
答案 0 :(得分:0)
如果我正确理解了您的问题,则无法将项目添加到现有堆栈中,这可能是由于以下if条件造成的:
if (inventoryItems[i].item == itemToAdd )
如果这行得通,则需要在Item类中覆盖“ Equals”和“ GetHashCode”方法,因为默认的“ ==”运算符仅检查引用是否相等
答案 1 :(得分:0)
许多错误。 isStackable检查到很晚。除了一堆物品之外。
drwxr-xr-x 2 root root 4096 Sep 20 21:29 pyodbc-4.0.27.dist-info
-rwxr-xr-x 1 root root 658704 Sep 20 21:29 pyodbc.cpython-36m-x86_64-linux-gnu.so
否则永远不会发生
if (inventoryItems[i].item == itemToAdd ) {}
else if (inventoryItems[i].item == itemToAdd && inventoryItems[i].stackSize > itemToAdd.stackSize) {}