XNA程式主要架構
在安裝完XNA的工具之後,開啟Microsoft Visual C# Express後新增專案就會增加一些開發遊戲的專案,這裡主要選擇Windows Game(3.0)專案來開發遊戲,之所以不用選Xbox360 Game(3.0)的原因,是因為XNA更新到2.0之後的版本,我們只需要在Window Game(3.0)專案遊戲製作完之後透過XNA 2.0之後的版本所提供的轉換成Xbox360專案功能就可轉換到Xbox360上面了。
XNA Framework被分為三個核心部份:
- Mircosoft.Xna.Framework.all ==> XNA圖像引擎
- Mircosoft.Xna.Framework.Game.all ==> XNA應用程式模組
- Mircosoft.Xna.Framework.Content.Pipeline.dlls ==> XNA內容管道
介紹一下Content Pipeline(內容管道),它主要是導入、編譯並且讀取我們在遊戲中可能會使用到2D圖片、3D模型、著色器(Shader)或是在XACT所編輯完的聲音專案等資源。
Content Pipeline其實是由五個dll檔案所組成:
- Microsoft.Xna.Framework.Content.Pipeline.dll ==> 包含了內容管道的基本
- Microsoft.Xna.Framework.Content.Pipeline.EffectImporter.dll ==> 用來編譯和導入著色器(Shader)
- Microsoft.Xna.Framework.Content.Pipeline.FBXImporter.dll ==> 用來導入.FBX的3D模型檔案,還有裡面模型的一些貼圖或是骨骼等資訊
- Microsoft.Xna.Framework.Content.Pipeline.TextureImporter.dll ==> 用來導入2D圖片,支援的格式有dds、png、jpg、tga和bmp等格式的檔案
- Microsoft.Xna.Framework.Content.Pipeline.XImporter.dll ==> 用來導入.X的3D模型檔案
在內容管理加入的2D圖片、3D模型、聲音專案或是字型檔案等資源,在被編譯完之後,所有的資源都會被轉成.xnb(XNA二進位的檔案格式)。
在專案建立後XNA已經幫我們預設好了一個重要的螢幕顯示物件和一個畫面更新會用到的變數,以方便我們在遊戲中使用該物件裡的某些功能,例如要在視窗內貼圖或是顯示文字等。
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
SpriteBatch spriteBatch;
還有預先設置好開發者可能會經常用到5個重要的函數,分別是Initialize()、LoadContent()、UnloadContent()、 Update()、Draw()等五大重要的函數,以方便開發者去撰寫自己的程式,根據函式命名就可以大略的知道該函式最主要的功能是什麼。
函數 | 功能 |
Initialize | 用來初始化 |
LoadContent | 讀取放入專案中的檔案,如圖片、3D模型等 |
UnloadContent | 在不使用到該資源時就會釋放該資源,往後再使用到的話就會在讀入該資源,有效的使用記憶體空間 |
Update | 處理、計算或做些程式判斷等動作 |
Draw | 顯示到螢幕上 |