我正在尝试创建一个可以存储不同类型物品的库存。
如果我仅对每个图块使用一个变量作为库存,并且不尝试将每种类型的物品归为一类,是否有办法解决此问题?
这是我已经开始做的一些代码:
瓷砖类:
public class Tile
{
public Item inventory;
}
物品类别:
using UnityEngine;
public class Item
{
public itemType type;
}
public enum itemType
{
crop,
tool,
cooker,
dish
}
感谢您的关注。
编辑:这是通过使用polymorphysm解决的,将派生的类强制转换为基类。
答案 0 :(得分:1)
您可以创建所有项目都实现的界面。这样,您可以让许多类实现接口并将其实例设置为Tile类中的type
变量
IItem接口
public interface IItem
{
public itemType type {get; set;}
}
Item类实现接口
public class Item : IItem
{
public itemType type {get; set;}
}
瓷砖课
using UnityEngine;
public class Tile
{
public List<itemType> allowedItems;
public IItem inventory;
public virtual void interact (IItem item, PlayerInteraction player)
{
foreach (itemType allowedItem in allowedItems)
{
if (allowedItem != item.type)
{
continue;
}
if (inventory == null && item != null)
{
player.setItem(inventory)
inventory = item;
}
}
}
}
答案 1 :(得分:0)
您可以将基类或接口存储在Text(test_str, style: TextStyle(fontFamily: 'Phoenician'),
中,也可以将通用方法添加到基类型/接口中,也可以仅将其pattern match添加到基类/接口中。
以下代码基于my discussion with OP
Tile