Unity C#库存物品移动功能出现3个编译错误,寻求解决方法
解决Unity+C#库存移动物品功能的三个编译错误
针对你遇到的三个编译错误,逐个给出修复方案:
错误1:CS1061 - MouseItemData 没有 InventorySlot 属性
问题原因
你在InventoryDisplay的SlotClicked方法中,错误访问了mouseInventoryItem.InventorySlot,但MouseItemData类里定义的对应字段是AssignedInventorySlot,属性名拼写不符。
修复代码
修改InventoryDisplay中SlotClicked方法的判断条件:
// 原代码 if (clickedUISlot.AssignedInventorySlot.ItemData != null && mouseInventoryItem.InventorySlot.ItemData == null) // 修改后 if (clickedUISlot.AssignedInventorySlot.ItemData != null && mouseInventoryItem.AssignedInventorySlot.ItemData == null)
错误2:CS0103 - clickedUIslot 当前上下文中不存在
问题原因
方法参数是clickedUISlot(首字母U大写),但你后续调用时写成了clickedUIslot(首字母u小写),C#是大小写敏感语言,导致无法识别变量。
修复代码
修改InventoryDisplay中SlotClicked方法里的清理代码:
// 原代码 clickedUIslot.ClearSlot(); // 修改后 clickedUISlot.ClearSlot();
错误3:CS1061 - InventorySlot 没有 AssignItem 方法
问题原因
你在InventorySlot中定义的方法是AssignedItem(多了一个字母d),但在MouseItemData的UpdateMouseSlot方法里调用的是AssignItem,方法名拼写不一致。
修复代码
将InventorySlot中的方法名修正为AssignItem,同时统一字段大小写(避免潜在访问错误):
// 原代码 public void AssignedItem(InventorySlot invSlot) { if (itemData == invSlot.ItemData) AddToStack(invSlot.stackSize); else { itemData = invSlot.itemData; stackSize = 0; AddToStack(invSlot.stackSize); } } // 修改后 public void AssignItem(InventorySlot invSlot) { if (itemData == invSlot.ItemData) AddToStack(invSlot.stackSize); else { itemData = invSlot.ItemData; stackSize = 0; AddToStack(invSlot.stackSize); } }
内容的提问来源于stack exchange,提问作者Bendas627
相关产品推荐
相关产品推荐

