跳轉到內容

使用 XNA 建立遊戲/程式設計/可重用元件

來自 Wikibooks,開放世界中的開放書籍

可重用元件

[編輯 | 編輯原始碼]

有很多元件可以輕鬆地用於其他遊戲。例如 3D 雷達抬頭顯示 [3D 雷達 HUD]。在本節中,我們將展示一些最常見的元件,並特別展示在何處找到大量此類元件的連結。之後,我們將介紹如何使用 XNA Framework 建立自己的遊戲元件,這些元件可以在以後重複使用。

遊戲狀態管理

[編輯 | 編輯原始碼]

遊戲狀態管理示例 代表遊戲的菜單系統,並透過切換螢幕對使用者輸入做出反應。起點是主選單,其中包含三個條目:播放選項退出

在這個示例中,存在幾個 GameScreen 類的例項,它們由 ScreenManager 類管理。GameScreen 是一個抽象類,透過其更新處理輸入繪製方法為菜單系統中使用的所有其他螢幕建立基礎。表示不同螢幕的其他類擴充套件了 GameScreen 類。實際的遊戲玩法也是一個螢幕,必須設定在 GameplayScreen 類中。

MenuEntry 是一個輔助類,用於建立選單(MenuScreen 類)的單個條目,該條目在被選中時會發送事件 OnSelectEntry。在這個示例中,選單條目只是一個字串,但您可以根據您的遊戲設計修改表示形式。MenuScreen 類的物件將包含選單條目的集合和當前選中條目的索引。

在建立的 Game 類中有一個 ScreenManager 類的例項,並且添加了兩個螢幕:第一個用於背景,第二個用於主選單。

您還可以在下面的連結章節中找到主選單的其他一些示例,包括用於多人網路遊戲的類似解決方案,其中包含用於維護會話和錯誤處理的選單。

抬頭顯示(HUD)

[編輯 | 編輯原始碼]

分數、生命、血條...

[編輯 | 編輯原始碼]

每個遊戲都包含一些元素,幫助玩家跟蹤進度。例如,如果你獲得了一些獎勵,它們將顯示在螢幕上。其他示例可能是血條、生命數量和分數計數器。所有這些都是遊戲的常見部分,可以使用遊戲元件實現。

有一個可重用庫 XNA 可重用 UI 元件 提供這些元件。它包含四個類

  • 計數器
  • 計時器
  • 通用元件

要使用這些元件,請下載庫,解壓縮 .dll 檔案並將其作為引用新增到您的專案中。現在您可以建立您需要的類的物件並設定屬性值。例如,這些是條位置、分數值等。現在,您可以在 Game 類的繪製方法中新增對例項繪製方法的呼叫。

該庫還提供事件處理:如果達到最小值或最大值,則會發送事件。這些事件可以被覆蓋,因此您可以決定如果玩家沒有生命或燃料了該怎麼辦。

該庫的詳細文件可以在 這裡 找到。

3D 雷達

[編輯 | 編輯原始碼]

3D 雷達 HUD 是 HUD 的另一個示例,它展示瞭如何使用 2D 抬頭顯示將 3D 雷達整合到 3D 遊戲中。


建立可重用元件

[編輯 | 編輯原始碼]

好的,我們已經瞭解到,如果您正在編寫可能在下一個專案中需要的內容,那麼建立遊戲元件通常是一個非常好的主意。現在讓我們談談如何做到這一點。XNA Framework 提供了一些用於此目的的類,使用它們,您將能夠建立一個新的遊戲元件,您可以在以後重複使用和/或共享。

要做到這一點,請建立一個擴充套件 Microsoft.Xna.Framework.GameComponentMicrosoft.Xna.Framework.DrawableGameComponent 類的類。在類建構函式中,您必須將對 Game 例項的引用作為引數傳遞。

如果您將包含處理使用者輸入的功能的類派生自 GameComponent 類,例如,對按下特定鍵做出反應。在這種情況下,將有兩個方法要覆蓋

  • 初始化
  • 更新

如果要將某些內容繪製到螢幕上,則應使用 DrawableGameComponent 類。它擴充套件了前一個類,並且還有一些其他方法,包括

  • 載入內容
  • 解除安裝內容
  • 繪製

這裡有一些教程,您可能需要檢視它們,以瞭解有關建立遊戲元件的更多資訊,並找到一些示例

在何處找到更多示例?

[編輯 | 編輯原始碼]

下面列出的一些資源包含可以下載並在遊戲中使用的完整專案。但是,還有一些教程展示了建立特定元件的過程。

使用者介面元素

[編輯 | 編輯原始碼]

遊戲選單

[編輯 | 編輯原始碼]

抬頭顯示

[編輯 | 編輯原始碼]

瑪麗亞(維基登入名:jasna)

華夏公益教科書