库存中由材料(也是一个项目)制成的项目的数据模型

我正在将制作机制统一构建到我的游戏中,但我的数据模型遇到了麻烦:


我希望游戏中的每个“Item”都由“ResourceMaterial”组成 我也希望 ReseourceMaterial 从 Item 继承


ResourceMaterial 继承自 Item 非常重要,因为 Item 在所有代码中都使用,以便能够在库存中拾取、添加和操作。


问题是每个项目都有一个资源材料列表,这些资源材料是项目,因此有一个资源材料列表,这些资源材料是具有资源材料列表的项目,等等......永远。


我如何重组它以避免永远的问题?


//Here is an example of the classes

[System.Serializable]

public class Item

{

    public int ItemID;          //from db

    public string Name;         //items name

    public string Description;  //A description of the items uses


    //...//


    public List<ResourceMaterial> ResourceMaterials = new List<ResourceMaterial>();

}


[System.Serializable]

public class ResourceMaterial : Item

{

    public int ResourceID;      //from db

    public int NumberRequired;  

    public int WorkingTime;     //time in seconds to use

}


繁星点点滴滴
浏览 72回答 1
1回答

小唯快跑啊

不要序列化Item实例,序列化ItemStacks您唯一需要序列化的是Item它的 ID。就是这样。它们在游戏开始时已经自动构建,您不需要将它们的结构保存到磁盘。当您反序列化堆栈时,您可以通过 ID 查找Item已存在的实例并将堆栈指向它。您可能必须使用比 JsonUtiliy 更详细的序列化系统,例如 JSON .NET,以便您可以编写所需的自定义合约解析器和自定义转换器。此外,您可能不应该保留如何在 Item 类中创建项目的方法。使用保存您的食谱的食谱管理器。这允许更大的灵活性。
打开App,查看更多内容
随时随地看视频慕课网APP