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;
无论这是否满足您的需求,您 运行 遇到的问题是您无法定义非类型的列表,并且您需要所有类型的共享基类型清单项目,以便您可以创建最低公分母的列表。希望这有帮助。
所以,我正在使用 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;
无论这是否满足您的需求,您 运行 遇到的问题是您无法定义非类型的列表,并且您需要所有类型的共享基类型清单项目,以便您可以创建最低公分母的列表。希望这有帮助。