3
許多遊戲示例/教程只關注主遊戲的渲染,並不顯示遊戲的其餘部分,如第一個登錄頁面,啓動畫面,高分頁面,信用頁面等。如何在遊戲中創建多個頁面視圖?
對於像DirectX和XNA這樣的東西,這些其他屏幕是如何創建/渲染的?
許多遊戲示例/教程只關注主遊戲的渲染,並不顯示遊戲的其餘部分,如第一個登錄頁面,啓動畫面,高分頁面,信用頁面等。如何在遊戲中創建多個頁面視圖?
對於像DirectX和XNA這樣的東西,這些其他屏幕是如何創建/渲染的?
除了Davidsbro提到的Microsoft示例,如果您想創建自己的基本遊戲狀態管理系統,您可以通過使用枚舉開關來實現。對於這種方法,您將聲明一個枚舉類型並將其設置爲默認值,在這種情況下,默認值可以是遊戲的主菜單。在XNA這看起來像以下:
enum GameScene { menu, game };
GameScene scene = GameScene.menu;
裏面的遊戲更新方法,那麼你會實現這將是負責處理這兩個枚舉狀態的開關語句:
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);
}
此外,你需要實現某種形式的邏輯來在不同的遊戲狀態之間轉換。這可以通過用戶輸入或某種形式的遊戲計時器來實現。
...遊戲其餘部分的渲染方式相同嗎? –
如果你的意思是你想要有多個屏幕,你應該看看'screenmanager'。它基本上跟蹤屏幕,並可以添加/刪除它們,因此可以很容易地創建菜單,啓動屏幕等。我認爲微軟有一個很容易處理的樣本,但我不確定他們是否仍然有它。 – davidsbro
感謝您的提示,使用該關鍵字,我可以從Microsoft找到這個例子,他們在這裏構建了一個使用多個屏幕的XNA遊戲。 http://msdn.microsoft.com/en-us/windowsphonetrainingcourse_multitouchgamedevelopmentwithxna_topic2.aspx – erotavlas