【发布时间】:2011-11-23 16:40:03
【问题描述】:
我正在构建一个游戏项目,其中包含可以有子对象的简单容器对象。我不知何故需要将游戏的“状态”和序列化保存到 XML。然后我将通过序列化 XML 来简单地加载游戏,但我需要保存对象、链接等的状态。实现这一点的最佳实践是什么?为了演示,想想这些:
GameObject Bag (ID 1234)
--------------
Sword (object ID 5678, some reference to another object in game: 0987)
等等。我有对象之间的游戏内引用,我需要在保存/加载到 XML 时保留此状态。在一个简单的场景中,我对 XML 序列化本身没有任何问题,但我不知道如何保留对象之间的“链接”。
【问题讨论】:
-
它真的需要是XML吗? XML 是一种树格式...支持对象引用的 XML 序列化程序并不多。
-
不,不一定,但如果它是 .NET 内置的东西(不是 3rd 方库),我会非常高兴
-
提供此功能的唯一内置程序是:BinaryFormatter、DataContractSerializer(通过特定的构造函数 - 默认情况下未启用)和 NetDataContractSerializer。我同意 Anders 的观点,即 DataContractSerializer 是其中最合适的。各种 3rd 方序列化程序也可以,但您明确表示您选择不使用这些...有什么原因吗?
-
我不想依赖任何不属于原始 .net(及其官方框架)的第三方库..
-
那是您的决定,但社区工具实际上非常活跃且质量上乘;当然,通常由您来进行任何修复等,速度会更快。
标签: c# serialization xna xml-serialization deserialization