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

3
许多游戏示例/教程只关注主游戏的渲染,而不展示游戏的其他部分,例如第一个登陆页面、闪屏、高分榜和制作人员名单等等。对于类似DirectX和XNA这样的技术,这些其他屏幕是如何创建/渲染的呢?

1
游戏的其余部分也是以同样的方式呈现的吗? - Joe Runde
5
如果你想要多屏幕,你应该看看 screenmanager。它基本上会跟踪屏幕并可以添加/删除它们,这样就可以轻松地创建菜单、启动屏幕等。我认为微软有一个非常容易使用的示例,但我不确定他们是否仍然拥有它。 - davidsbro
2
谢谢你的提示,有了这个关键词,我能够找到微软提供的一个示例,他们在其中构建了一个使用多个屏幕的XNA游戏。http://msdn.microsoft.com/en-us/windowsphonetrainingcourse_multitouchgamedevelopmentwithxna_topic2.aspx - erotavlas
1个回答

2

除了Davidsbro提到的Microsoft示例之外,如果您想创建自己的基本游戏状态管理系统,可以通过使用enum switch来实现。对于这种方法,您需要声明一个枚举类型并设置其默认值,在这种情况下,默认值可以是游戏的主菜单。在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);
}

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接