首页 > 解决方案 > 制作系统,移除物品不会移除物品

问题描述

我正在开发带有制作系统的库存系统。当我第一次让它工作时,如果玩家在 Inventory 中有足够的资源来制作它,它就会制作物品,然后移除用于制作物品的物品并添加我们刚刚制作的物品。但是现在它应该删除用于制作对象的项目的部分不起作用。

一切开始的功能:

public bool CraftItem() {

    //if CanCraft returned false we return false from function
    if(!CanCraft()) {

        return false;

    }

    //start crafting
    ParentCraftingSlot.StartCrafting();

    //call RemoveIngredientsFromInventory to remove item from inventory
    RemoveIngredientsFromInventory();

    //return true
    return true;

}

RemoveIngredientsFromInventory 函数:

//remove ingredients from inventory
//because we don't want to have the ingredients after we crafted something
private void RemoveIngredientsFromInventory() {

    foreach(Ingredient ingredient in ingredients) {

        //call RemoveItems function with ingredient item and amount
        Inventory.instance.RemoveItems(ingredient.item, ingredient.amount);

    }

}

删除项目功能:

//RemoveItems from inventory
public void RemoveItems(Item item, int amount) {

    //loop through amount of items
    for(int i = 0; i < amount; i++) {

        //remove item from Inventory
        RemoveItem(item);

    }

}

然后是 RemoveItem 函数(我将它作为一个不同的函数,因为我需要从列表中删除该项目,然后调用更改以便显示它,然后我不必每次只需要调用该函数时都编写它) :

//Remove Item function
public void RemoveItem(Item item) {

    //remove item from IntentoryItemList list
    InventoryItemList.Remove(item);
    onItemChange.Invoke();

}

我试图在 RemoveItem 函数内的控制台中写入一些内容,并将其写入控制台,但由于某种原因,它没有删除成分。

标签: c#listunity3d

解决方案


推荐阅读