将外部数据加载到XNA4.0游戏中的“建议”方式是什么?

时间:2011-05-25 15:57:49

标签: xna xna-4.0 xbox360

我目前正在开发一款注定要提交给XBLIG的游戏。

我的问题很简单,我想知道哪种是通过外部XML文件加载数据的“建议”方式。

我至少需要这个开发(在PC上),以便游戏设计师可以使用游戏变量而不需要重建。

在xna3.1中,我使用了xna4.0不再存在的IntermediateSerializer。

我可能会为运输创建一个内容管道扩展,除非当然有人可以提出适用于PC和XBox的惊人答案! :d

谢谢,

1 个答案:

答案 0 :(得分:2)

首先,IntermediateSerializer exist in XNA 4.0

然而 ,XNA 4.0从针对.NET 2.0框架转变为针对.NET 4.0框架,后者有两种版本。 XNA运行时程序集以紧凑框架为目标,但内容管道程序集以完整框架为目标。您需要进入项目属性并更改目标框架以允许您使用IntermediateSerializer

此外,Xbox 360上内容管道 不可用 Windows没有安装完整的XNA Game Studio。这意味着您无法在Xbox 360上运行InterpediateSerializer 在Windows上进行分发(适用于XNA 3.1和4.0)。

因此,如果要在运行时使用它,在开发期间,解决方案是在Windows上为项目添加特定的构建目标。为#ifdef DEVELOPMENT提供预处理器定义以包装代码,使目标成为(更大的)完整.NET 4.0 Framework,并向Microsoft.Xna.Framework.Content.Pipeline添加程序集引用(其中IntermediateSerializer住)。

(我将把条件框架定位和汇编引用作为你研究的东西 - 我很确定它需要手工编辑项目文件。或者你可以只是并行地创建和维护一个新的项目文件。 )

所以剩下的就是你的发行版本中该怎么做的问题,你没有IntermediateSerializer

非常容易:您可以将XML文件拖到内容项目中。默认的Content Pipeline XML导入器会获取您的XML,并为您运行IntermediateSerializer,创建一个XNB文件。然后,您可以通过ContentManager在运行时将该文件作为内容加载。 (see also

(我不建议在加载代码中粘贴一堆条件,而是建议正常使用此方法(在加载时),然后仅使用IntermediateSerializer方法“重新加载XML”代码路径。)