c# - 制作系统,移除物品不会移除物品
问题描述
我正在开发带有制作系统的库存系统。当我第一次让它工作时,如果玩家在 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 函数内的控制台中写入一些内容,并将其写入控制台,但由于某种原因,它没有删除成分。
解决方案
推荐阅读
- typescript - TypeScript 扩展接口/类型的所有值类型
- c# - 如何在不重新编译的情况下配置我的 C# 项目?
- html - 如何在网页上嵌入 3DVista 虚拟游览作为响应式全屏?
- javascript - 使用 forwardRef 传递多个元素
- vue.js - 通过字符串值获取 Vuejs Store 变量
- ios - 我可以将 Swift 客户端用于 SignalR (iOS)
- python - 从 word1 到 word2 的所有更改列表(通过 Levenshtein)
- python - 熊猫数据框...迭代与列表理解...寻求建议
- sql - 空集中的 Postgres 查询优化器
- android - Xamarin 将 ViewModel 和注入存储库的问题形成到此模型中以插入数据库