由于我需要多个屏幕,1)我可以定义多个游戏类(继承自 Microsoft.Xna.Framework.Game 并具有不同的类名)。2)是否有任何设计缺陷以这种方式产生?
2 回答
该程序首先初始化Game1
继承该类的Game
类。所以我认为更改自动代码不是一个好主意。
此外,顾名思义;如果您有多个Game
课程,这意味着您正在运行多个“游戏”。但这种情况并非如此。相反,您在一个Game
.
要分隔这些屏幕,您可以使用不同的DrawableGameComponent
. 它还包含自己的Draw
方法Update
和您可以实现的方法。稍后您可以将所有这些DrawableGameComponent
s添加到 的Components
列表属性中Game1
。
所有的复杂性都将分布在DrawableGameComponent
s 中。他们的Draw
andUpdate
方法会被 XNA 自动调用。
这可能会有所帮助。
我认为这是一个好方法。欢迎任何更好的建议
我认为这在 Windows Phone 7 上是不可能的。该平台通过查找派生自Game
实例的类来启动 XNA 游戏(与您自己创建实例的 Xbox 和 Windows 不同)。我怀疑如果您有多个派生类,它将失败。(你可以试试。)
然后是 的问题GraphicsDevice
。我怀疑在 WP7 上设置图形设备的两个实例是不可能的。你如何改变哪一个可以写到屏幕上?我不知道有任何 API 可以做到这一点。
此外,如果您确实有两个独立的图形设备 - 您无法在两者之间共享内容。您将不得不加载它两次 - 一个性能问题。
理论上你可以设置两个实例Game
来使用一个GraphicsDevice
。但这涉及编写您自己的GraphicsDeviceManager
. 这不是一件容易的事——而且肯定比简单地设置一个简单的状态机来处理不同的屏幕要困难得多。
或许可以查看Game State Management示例,了解它应该如何完成的示例。