使用 XNA 建立遊戲/程式設計/可重用元件
有很多元件可以輕鬆地用於其他遊戲。例如 3D 雷達抬頭顯示 [3D 雷達 HUD]。在本節中,我們將展示一些最常見的元件,並特別展示在何處找到大量此類元件的連結。之後,我們將介紹如何使用 XNA Framework 建立自己的遊戲元件,這些元件可以在以後重複使用。
該 遊戲狀態管理示例 代表遊戲的菜單系統,並透過切換螢幕對使用者輸入做出反應。起點是主選單,其中包含三個條目:播放、選項和退出。
在這個示例中,存在幾個 GameScreen 類的例項,它們由 ScreenManager 類管理。GameScreen 是一個抽象類,透過其更新、處理輸入和繪製方法為菜單系統中使用的所有其他螢幕建立基礎。表示不同螢幕的其他類擴充套件了 GameScreen 類。實際的遊戲玩法也是一個螢幕,必須設定在 GameplayScreen 類中。
MenuEntry 是一個輔助類,用於建立選單(MenuScreen 類)的單個條目,該條目在被選中時會發送事件 OnSelectEntry。在這個示例中,選單條目只是一個字串,但您可以根據您的遊戲設計修改表示形式。MenuScreen 類的物件將包含選單條目的集合和當前選中條目的索引。
在建立的 Game 類中有一個 ScreenManager 類的例項,並且添加了兩個螢幕:第一個用於背景,第二個用於主選單。
您還可以在下面的連結章節中找到主選單的其他一些示例,包括用於多人網路遊戲的類似解決方案,其中包含用於維護會話和錯誤處理的選單。
每個遊戲都包含一些元素,幫助玩家跟蹤進度。例如,如果你獲得了一些獎勵,它們將顯示在螢幕上。其他示例可能是血條、生命數量和分數計數器。所有這些都是遊戲的常見部分,可以使用遊戲元件實現。
有一個可重用庫 XNA 可重用 UI 元件 提供這些元件。它包含四個類
條計數器計時器通用元件
要使用這些元件,請下載庫,解壓縮 .dll 檔案並將其作為引用新增到您的專案中。現在您可以建立您需要的類的物件並設定屬性值。例如,這些是條位置、分數值等。現在,您可以在 Game 類的繪製方法中新增對例項繪製方法的呼叫。
該庫還提供事件處理:如果達到最小值或最大值,則會發送事件。這些事件可以被覆蓋,因此您可以決定如果玩家沒有生命或燃料了該怎麼辦。
該庫的詳細文件可以在 這裡 找到。
3D 雷達 HUD 是 HUD 的另一個示例,它展示瞭如何使用 2D 抬頭顯示將 3D 雷達整合到 3D 遊戲中。
好的,我們已經瞭解到,如果您正在編寫可能在下一個專案中需要的內容,那麼建立遊戲元件通常是一個非常好的主意。現在讓我們談談如何做到這一點。XNA Framework 提供了一些用於此目的的類,使用它們,您將能夠建立一個新的遊戲元件,您可以在以後重複使用和/或共享。
要做到這一點,請建立一個擴充套件 Microsoft.Xna.Framework.GameComponent 或 Microsoft.Xna.Framework.DrawableGameComponent 類的類。在類建構函式中,您必須將對 Game 例項的引用作為引數傳遞。
如果您將包含處理使用者輸入的功能的類派生自 GameComponent 類,例如,對按下特定鍵做出反應。在這種情況下,將有兩個方法要覆蓋
- 初始化
- 更新
如果要將某些內容繪製到螢幕上,則應使用 DrawableGameComponent 類。它擴充套件了前一個類,並且還有一些其他方法,包括
- 載入內容
- 解除安裝內容
- 繪製
這裡有一些教程,您可能需要檢視它們,以瞭解有關建立遊戲元件的更多資訊,並找到一些示例
下面列出的一些資源包含可以下載並在遊戲中使用的完整專案。但是,還有一些教程展示了建立特定元件的過程。
瑪麗亞(維基登入名:jasna)