C#中不同类型的列表(库存系统)

List of different types in C# (Inventory system)

所以,我正在使用 C# 从头开始​​在 Unity3D 中构建一个库存系统,我遇到了以下问题:

我有三种库存对象:

武器、装备和消耗品。

因此,例如:

// Weapon Class
class Weapon : Equipable
{
    public int damage
}

// Equipment Class
class Equipment : Equipable
{

    public EquipmentType equipmentType;

    public enum EquipmentType {
        Helmet,
        Armor
    }
}    

// Consumable Class
class Consumable : Item
{
    public ConsumableStat stat;
    public int factor;

    public enum ConsumableStat
    {
        Life,
        Mana
    }
}

// Equipable Class
class Equipable : Item
{
    public int durability
}

// Item Class
class Item
{
    public string name;
}

现在,玩家有一个列表作为库存。

这个列表,应该存放武器装备和消耗品

我试过:

public List<T> inventory

但我在控制台收到以下错误:

找不到类型或名称空间名称“T”。您是否缺少 using 指令或程序集引用?

已经在互联网上搜索过,但找到了我认为不是最正确的处理方法的解决方案。

有人已经介入这个问题了吗?

真正创建通用对象列表的最佳方法是什么?

C# 和 Unity3D 对我来说是新的。我是一位经验丰富的 Web 开发人员,正在转向游戏开发。

Ps.: 抱歉英语不好,提前致谢!

您需要在 class 上设置列表时声明类型,即您的 public List<T> Inventory - 为了将所有这些东西存储在一个列表中,它们需要有一个共同点它们之间共享的类型或接口。我建议创建共享接口或基类型。在这种特定情况下,我认为基本类型最有意义。例如:

public abstract Item
{
    string Id { get; set; }
    bool IsConsumable { get; }
    /* etc. or whatever you use in all your classes */
{

这样你就可以这样建立你的清单:

public List<Item> Inventory;

无论这是否满足您的需求,您 运行 遇到的问题是您无法定义非类型的列表,并且您需要所有类型的共享基类型清单项目,以便您可以创建最低公分母的列表。希望这有帮助。