XNA游戏类

时间:2012-10-09 08:56:36

标签: c# visual-studio-2010 windows-phone-7 xna-4.0

由于我需要多个屏幕,1)我可以定义多个游戏类(继承自Microsoft.Xna.Framework.Game并具有不同的类名)。 2)是否存在以这种方式创建的设计缺陷?

2 个答案:

答案 0 :(得分:0)

程序首先初始化继承Game1类的Game类。所以我认为更改自动代码并不是一个好主意。

此外,顾名思义;如果你有多个Game类,那意味着你正在运行多个“游戏”。但这种情况并非如此。相反,您在一个Game中确实有多个屏幕。

要分隔这些屏幕,您可以使用不同的DrawableGameComponent。它还包含您自己可以实现的DrawUpdate方法。 之后,您可以在DrawableGameComponent的{​​{1}}列表property中添加所有这些Components

所有复杂性都将在Game1之间分配。他们的DrawableGameComponentDraw方法将由XNA自动调用。

This可能会有所帮助。

我认为这是一个好方法。欢迎任何更好的建议

答案 1 :(得分:0)

我不认为这可以在Windows Phone 7上实现。该平台通过查找从Game派生到实例的类来启动XNA游戏(与您自己创建实例的Xbox和Windows不同)。我怀疑如果你有多个派生类会失败。 (你可以尝试一下。)

然后是GraphicsDevice的问题。我怀疑在WP7上设置两个图形设备实例是不可能的。你如何改变哪一个可以写入屏幕?我不知道有任何API可以做到这一点。

此外,如果您确实有两个独立的图形设备 - 您无法在两者之间共享内容。您必须加载两次 - 性能问题。

理论上,您可以设置Game的两个实例来使用GraphicsDevice。但这涉及编写自己的GraphicsDeviceManager替换版本。这不是一件容易的事 - 当然比设置一个简单的状态机来处理不同的屏幕要困难得多。

也许可以查看Game State Management示例,了解它应该如何完成。