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

C++ 如何在游戏中创建多个页面视图?,c++,xna,directx,C++,Xna,Directx,许多游戏示例/教程只关注主游戏的渲染,而不显示游戏的其他部分,如第一个登录页、闪屏、高分页、积分页等 对于DirectX和XNA之类的东西,这些其他屏幕是如何创建/呈现的?与Davidsbro提到的Microsoft示例不同,如果您想创建自己的基本游戏状态管理系统,可以通过使用枚举开关来创建。对于这种方法,您可以声明枚举类型并设置其默认值,在这种情况下,默认值可以是游戏的主菜单。在XNA中,这将类似于以下内容: enum GameScene { menu, game }; GameScene s

许多游戏示例/教程只关注主游戏的渲染,而不显示游戏的其他部分,如第一个登录页、闪屏、高分页、积分页等


对于DirectX和XNA之类的东西,这些其他屏幕是如何创建/呈现的?

与Davidsbro提到的Microsoft示例不同,如果您想创建自己的基本游戏状态管理系统,可以通过使用枚举开关来创建。对于这种方法,您可以声明枚举类型并设置其默认值,在这种情况下,默认值可以是游戏的主菜单。在XNA中,这将类似于以下内容:

enum GameScene { menu, game };
GameScene scene = GameScene.menu;
在games update方法中,您将实现一个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);
}

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

…与游戏其余部分的渲染方式相同?如果您的意思是希望有多个屏幕,那么您应该查看
屏幕管理器
。它基本上可以跟踪屏幕,并可以添加/删除屏幕,因此可以轻松创建菜单、启动屏幕等。我认为微软有一个非常容易使用的示例,但我不确定他们是否还拥有它。谢谢你的提示,有了这个关键词,我可以从微软找到这个例子,他们在那里开发了一款使用多个屏幕的XNA游戏。