为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
繁星点点滴滴 2023-09-24 15:54:05
我正在将制作机制统一构建到我的游戏中,但我的数据模型遇到了麻烦:我希望游戏中的每个“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}
查看完整描述

1 回答

?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

不要序列化Item实例,序列化ItemStacks

您唯一需要序列化的是Item它的 ID。就是这样。它们在游戏开始时已经自动构建,您不需要将它们的结构保存到磁盘。

当您反序列化堆栈时,您可以通过 ID 查找Item已存在的实例并将堆栈指向它。

您可能必须使用比 JsonUtiliy 更详细的序列化系统,例如 JSON .NET,以便您可以编写所需的自定义合约解析器和自定义转换器。

此外,您可能不应该保留如何在 Item 类中创建项目的方法。使用保存您的食谱的食谱管理器。这允许更大的灵活性。


查看完整回答
反对 回复 2023-09-24
  • 1 回答
  • 0 关注
  • 46 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信