c++ - 如何在游戏中创建多个页面 View ?

标签 c++ xna directx

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

对于 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 方法中实现另一个开关,类似于上面的枚举开关。

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

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

关于c++ - 如何在游戏中创建多个页面 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16825623/

相关文章:

c++ - 无法使程序正确计算

C++ 奇怪的段错误

windows - Linux 和 Windows XP 上的 OpenGL 性能差异

c# - 如何在非托管 DirectX 中将纹理映射到圆柱体?

c++ - union的用法和乱码

c++ - 理解运算符重载的问题

c# - 将图像和声音文件转换为 XNB 文件

c# - 在带有 C# 的 XNA 游戏中实现碰撞检测的最简单方法是什么?

c# - HLSL 和 XNA : How do I get the position and color of surrounding pixels of the current pixel shader iteration?

c++ - 水平撕裂 DirectX9