我目前正在开发一款注定要提交给 XBLIG 的游戏。
我的问题很简单,我想知道哪种是通过外部 XML 文件加载数据的“建议”方式。
我至少需要这个来开发(在 PC 上),这样游戏设计师就可以处理游戏变量而无需重建。
在 xna3.1 中,我使用了 xna4.0 不再存在的 IntermediateSerializer。
我可能会为发货创建一个内容管道扩展,当然除非有人可以提出一个适用于 PC 和 XBox 的惊人答案!:D
谢谢,
嗯,首先,IntermediateSerializer
确实 存在于 XNA 4.0 中!
但是,XNA 4.0 从面向 .NET 2.0 框架更改为面向 .NET 4.0 框架,有两种风格。XNA 运行时程序集以紧凑框架为目标,但内容管道程序集以完整框架为目标。您将需要进入您的项目属性并更改目标框架以允许您使用IntermediateSerializer
.
此外,内容管道在 Xbox 360 上不可用,在未安装完整 XNA Game Studio 的 Windows 上也不 可用。InterpediateSerializer
这意味着在 Xbox 360 上运行或在 Windows 上分发时不能使用(适用于 XNA 3.1 和 4.0)。
因此,如果您想在运行时使用它,在开发过程中,解决方案是在您的项目中添加一个特定的构建目标,以便在 Windows 上进行开发。给它一个预处理器定义#ifdef DEVELOPMENT
来包装你的代码,使目标(更庞大的)完整的.NET 4.0 框架,并添加一个程序集引用到Microsoft.Xna.Framework.Content.Pipeline
(在哪里IntermediateSerializer
)。
(我将把条件框架定位和程序集引用留给你研究——我很确定它需要手动编辑项目文件。或者你可以并行创建和维护一个新的项目文件。)
所以剩下的就是在你没有的发行版本中做什么的问题IntermediateSerializer
?
这非常简单:您可以将您的 XML 文件拖到您的内容项目中。默认的内容管道 XML 导入器获取您的 XML,为您运行它IntermediateSerializer
,创建一个XNB
文件。然后,您可以在运行时将该文件作为内容加载,通过ContentManager
. (另见)
(与其在加载代码中添加一堆条件,我建议正常使用此方法(在加载时),然后仅使用IntermediateSerializer
“重新加载 XML”代码路径的方法。)