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