【问题标题】:How are multiple page views created in a game?如何在游戏中创建多个页面浏览量?
【发布时间】:2013-05-29 23:34:08
【问题描述】:

许多游戏示例/教程只关注主游戏的渲染,而没有展示游戏的其余部分,例如第一个登录页面、启动画面、高分页面、积分页面等。

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

【问题讨论】:

  • ...与游戏其余部分的渲染方式相同?
  • 如果您的意思是想要拥有多个屏幕,您应该查看screenmanager。它基本上可以跟踪屏幕并可以添加/删除它们,因此可以轻松创建菜单、开始屏幕等。我认为 Microsoft 有一个非常易于使用的示例,但我不确定他们是否还有它。
  • 感谢您的提示,使用该关键字,我能够从 Microsoft 找到这个示例,他们在其中构建了一个使用多个屏幕的 XNA 游戏。 msdn.microsoft.com/en-us/…

标签: c++ xna directx


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-17
    • 1970-01-01
    • 1970-01-01
    • 2022-06-10
    相关资源
    最近更新 更多