跳轉到內容

使用 XNA 建立遊戲/基礎/遊戲迴圈

來自華夏公益教科書,為開放世界提供開放書籍

遊戲迴圈

[編輯 | 編輯原始碼]

遊戲主機 (GC) 的程式設計與普通 PC 的程式設計略有不同。PC 通常具有 Windows、Linux 或 Mac OS 等複雜的作業系統,而在遊戲主機上,我們更接近硬體。這與遊戲的特殊需求有關。我們必須考慮 PC 與 GC 之間的以下差異:

  • 在 GC 上,通常只有一個(多執行緒)程式在執行,因此沒有真正意義上的作業系統
  • 在 GC 上,需要原始圖形能力,但沒有帶視窗和小部件的 GUI
  • GC 通常沒有鍵盤、控制檯,有時甚至沒有硬碟

因此,你不會找到名為 Window、Form、Button 或 TextBox 的類。相反,你會找到名為 Sprite、Texture2D 和 Vector3 的類。我們談論的是內容管道、紋理和著色器。

通常,PC 程式是事件驅動的,這意味著使用者點選某個地方就會發生某些事情。如果使用者沒有點選任何地方,就不會發生任何事情。在遊戲主機 (GC) 上,情況略有不同。在這裡,我們經常會發現所謂的“遊戲迴圈”。對於 Xbox 360,或者更確切地說 XNA 框架,它包含三個方法:

  • LoadContent()
  • Update( GameTime time )
  • Draw( GameTime time )

LoadContent() 在遊戲開始時被呼叫一次,用於載入影像、聲音、紋理等。Update() 用於獲取使用者輸入、更新遊戲狀態、處理 AI 和音效。Draw() 用於顯示遊戲。(MVC 模式)然後遊戲迴圈由引擎呼叫 Update() 和 Draw() 兩個方法。它們不一定按順序呼叫!

華夏公益教科書