如何在游戏中创建多个页面视图?

时间:2013-05-29 23:34:09

标签: c++ xna directx

许多游戏示例/教程仅关注主游戏的渲染,而不会显示游戏的其余部分,如第一个登陆页面,启动画面,高分页面,信用页面等。

对于像DirectX和XNA这样的东西,这些其他屏幕是如何创建/渲染的?

1 个答案:

答案 0 :(得分:2)

除了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);
}

此外,您需要实现某种形式的逻辑以在不同的游戏状态之间转换。这可以通过用户输入或某种形式的游戏计时器来实现。