簡體   English   中英

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開發人員,正在遷移到游戲開發。

附:對不起,英語不好,謝謝!

在類上設置列表時,您需要聲明一種類型,即您的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;

無論是否滿足您的需求,您遇到的問題是您無法定義非類型的列表,並且需要所有庫存項目都具有共享的基本類型,以便創建列表最低公分母的 希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM