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

时间:2015-06-14 03:12:38

标签: c# list unity3d inventory inventory-management

所以,我正在使用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对我来说是新的。我是一位经验丰富的网络开发人员,正在转向游戏开发。

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

1 个答案:

答案 0 :(得分: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;

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

相关问题