【问题标题】:How to save objects via serialization, if they are monobehaviour如果对象是单一行为,如何通过序列化保存对象
【发布时间】:2016-06-06 08:08:48
【问题描述】:

我想保存我的应用程序状态,所以我开始创建用于序列化的加载和保存函数。

然后我就碰壁了;当我意识到默认情况下,任何单一行为都无法序列化。

所以我告诉自己我应该把这个类包装在一个可序列化的对象中;但即使在那种情况下,我相信你不能拥有一个单一行为对象并将其标记为可序列化对象。

在从沙发上跳下来结束此生之前;我非常希望有一种方法可以避免复制各种类中的所有元素(到目前为止,我有 16 个类,每个类都带有由其他类类型的列表或字典组成的各种对象集合),以实际保存我的状态应用。

编写一个从每个类的每个对象中获取每个值的方法将花费我很长时间;虽然我的印象是保存每个对象,但至少我可以从保存的对象中检索数据并在加载时替换当前数据。

【问题讨论】:

  • 也许你想读这个:stackoverflow.com/a/29720295/5311735
  • 谢谢,我确实从那个帖子中得到了一些提示;虽然没有一个简单的答案,但关于如何避免重写部分代码以解释某些类不能序列化的事实。至少入门是一本很好的书。再次感谢

标签: c# unity3d


【解决方案1】:

在保存复杂的数据结构时,我总是选择使用 protobuf.Net Here 是 NuGet 包的链接。我还建议您关注this 教程以获得更深入的了解。该教程非常详细,它解释了如何创建存储数据所需的一切。我已经多次使用它并且可以保证它是独立于平台的。而且我确信您可以在 MonoBehaviour 上创建 ProtoContract。您只需在 ProtoBuf 项目中重新创建您的类结构。

【讨论】:

  • 感谢您的建议;我确实阅读了教程,它很简单;但是与仅继续使用纪念品模式相比,所需的工作量仍然很多。我不想冒险花时间实现这个,然后弄清楚我想要序列化的内容不会按预期工作。我已经花了 2 个月的时间来解决这个问题;时钟在滴答作响:) 谢谢你的建议!
猜你喜欢
  • 2021-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多