许多游戏示例/教程只关注主游戏的渲染,而没有展示游戏的其余部分,如第一个登陆页面、启动画面、高分页面、积分页面等。
对于 DirectX 和 XNA 之类的东西,这些其他屏幕是如何创建/渲染的?
除了 Davidsbro 提到的 Microsoft 示例之外,如果您想创建自己的基本游戏状态管理系统,您可以通过使用枚举开关来实现。对于这种方法,您将声明一个枚举类型并设置它的默认值,在这种情况下,默认值可以是游戏的主菜单。在 XNA 中,这看起来类似于以下内容:
enum GameScene { menu, game };
GameScene scene = GameScene.menu;
在游戏更新方法中,您将实现一个 switch 语句,该语句将负责处理两种枚举状态:
protected override void Update(GameTime gameTime)
{
switch (scene)
{
case GameScene.menu:
{
// Perform menu scene logic
break;
}
case GameScene.game:
{
// Perform game scene logic
break;
}
}
base.Update(gameTime);
}
然后,您需要在 draw 方法中实现另一个开关,类似于上面的 enum 开关。
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
switch (scene)
{
case GameScene.menu:
{
// Draw menu scene
break;
}
case GameScene.game:
{
// Draw game scene
break;
}
}
base.Draw(gameTime);
}
此外,您需要实现某种形式的逻辑来在不同的游戏状态之间进行转换。这可以通过用户输入或某种形式的游戏计时器来实现。