Windows Phone XAML和带有游戏组件的XNA应用程序

我正在使用Windows Phone模板“Windows Phone XAML和XNA应用程序”并定位到Windows Phone 7/8。 大多数示例显示您的游戏inheritance自Microsoft.Xna.Framework.Game ,然后将Microsoft.Xna.Framework.GameComponent项添加到Components集合中。 但是,当我的游戏页面从PhoneApplicationPageinheritance时,没有一个Components集合或一个Game属性。

我如何使用PhoneApplicationPage GameComponent

你不能。 他们基础设施的重要部分包含在Game类中。 (另外, GameComponent的构造函数需要一个Game 。)

我的建议(一如既往)是不使用GameComponent 。 和Game类本身一样,游戏组件也是框架的完全可选部分。 往往他们比他们的价值 更麻烦 。

你最好是创建“普通”类 – 不管你喜欢什么 – 然后制作一个普通的List来包含它们。 如果您需要游戏组件基础结构提供的其他任何function,那么实现起来也相当简单。

作为参考,该function基本上相当于:在列表迭代时添加/删除/重新sorting项目的机制(如在迭代之前复制列表一样简单),对组件进行sorting,禁用/隐藏组件,以及调用各种方法为你在明显的时间。

也就是说,如果你真的想使用与GameComponent相同的东西,你可以从ExEn(或者MonoGame,虽然我不知道他们的代码是什么样的)相关的代码。 有问题的代码被限制在GameComponents目录 ,应该是相当独立的。 与XNA本身不同,在GameComponentCollection ,魔法发生在可重用的GameComponentCollection类中,而不是深入Game类中。

(我使用XNA自己的代码来研究这个问题,但是不可能以一种不可怕的方式进行)。