Serialization XNA自动XNB序列化:它能做什么?它的最佳用途是什么?

Serialization XNA自动XNB序列化:它能做什么?它的最佳用途是什么?,serialization,xna,Serialization,Xna,我看到了Shawn Hargreaves发布的一些小示例,展示了如何手动定义一些xml内容,以创建和填充通过内容管道加载的c类实例 我可以看出,如果您有一个能够编写文件的编辑器,允许您加载一个级别或任何东西,那么这将非常有用 但是,我很好奇。。。它只做读取操作吗?你能用这个概念来保存游戏数据吗 它还可以用来做什么?自动XNB序列化只是内容管道在不需要ContentTypeWriter或ContentTypeReader的情况下读取/写入数据的能力。除了减少使用内容管道必须编写的代码量之外,它实际

我看到了Shawn Hargreaves发布的一些小示例,展示了如何手动定义一些xml内容,以创建和填充通过内容管道加载的c类实例

我可以看出,如果您有一个能够编写文件的编辑器,允许您加载一个级别或任何东西,那么这将非常有用

但是,我很好奇。。。它只做读取操作吗?你能用这个概念来保存游戏数据吗


它还可以用来做什么?

自动XNB序列化只是内容管道在不需要ContentTypeWriter或ContentTypeReader的情况下读取/写入数据的能力。除了减少使用内容管道必须编写的代码量之外,它实际上没有提供任何新特性

使用IntermediateSerializer从XML加载,或者使用XML导入器通过内容管道加载是另一回事

IntermediateSerializer使用反射自动将.NET对象实例转换为XML或从XML转换为XML

无论是否使用自动XNB序列化,内容管道都会将.NET对象实例转换为二进制XNB文件或从二进制XNB文件转换为.NET对象实例

内容管道还在内容构建端提供了一个可扩展的导入器/处理器系统,用于首先生成.NET对象,它包括各种内置的导入器/处理器。内置的XML导入器只使用IntermediateSerializer将XML转换为.NET对象实例

您不能在游戏中使用这些来执行写入操作(例如:保存游戏状态、内置级别编辑器等)的原因是,中间序列化程序(读写)和写入XNB内容管道的一半需要安装XNA game Studio


XNA游戏工作室不是可再发行的。只有XNA运行时是可再发行的。

您个人使用什么:1保存/加载游戏状态,2在游戏外部保存关卡编辑器数据,然后在游戏中加载数据?我有几本关于XNA的书,在谷歌上搜索过,但我很难找到最佳实践是什么…@Keith:我个人使用BinaryReader和BinaryWriter,因为它们简单快速。其他人更喜欢使用.NET中的其他自动序列化程序,因为它们只需要很少的额外代码,通常选择XML,因为它可以在开发过程中轻松检查和修改。对于一个编辑器,我可能会选择IntermediateSerializer,并简单地让它需要XNA Game Studio,这至少是一个免费下载,即使您自己无法分发它。