2013-05-29 92 views
3

許多遊戲示例/教程只關注主遊戲的渲染,並不顯示遊戲的其餘部分,如第一個登錄頁面,啓動畫面,高分頁面,信用頁面等。如何在遊戲中創建多個頁面視圖?

對於像DirectX和XNA這樣的東西,這些其他屏幕是如何創建/渲染的?

+1

...遊戲其餘部分的渲染方式相同嗎? –

+5

如果你的意思是你想要有多個屏幕,你應該看看'screenmanager'。它基本上跟蹤屏幕,並可以添加/刪除它們,因此可以很容易地創建菜單,啓動屏幕等。我認爲微軟有一個很容易處理的樣本,但我不確定他們是否仍然有它。 – davidsbro

+2

感謝您的提示,使用該關鍵字,我可以從Microsoft找到這個例子,他們在這裏構建了一個使用多個屏幕的XNA遊戲。 http://msdn.microsoft.com/en-us/windowsphonetrainingcourse_multitouchgamedevelopmentwithxna_topic2.aspx – erotavlas

回答

2

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

此外,你需要實現某種形式的邏輯來在不同的遊戲狀態之間轉換。這可以通過用戶輸入或某種形式的遊戲計時器來實現。

相關問題