0

因此,我正在使用 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.:抱歉英语不好,提前谢谢!

4

1 回答 1

4

您需要在类上设置列表时声明一个类型,即您的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;

无论这是否满足您的需求,您遇到的问题是您无法定义不是类型的列表,并且您需要在所有库存项目中共享基本类型,以便您可以创建列表的最小公分母。希望这可以帮助。

于 2015-06-14T03:21:08.150 回答