[Winodws8|Monogame]在Windows8的Monogame專案下載入Content

前言

前文中雖然告訴了大家如何開啟可以在Visual Studio 2012上開發、可在Windows 8執行的Monogame專案,但是仍有一些事情需要解決,就是使用、載入Content資產資源的部分,因為我們需要音效、需要能夠顯示遊戲圖像的圖片都需要放在Content。

Monogame上的Content 

雖然Monogame已經想盡辦法把讓開發者可以在Windows 8上開發XNA,但仍然有些無法相容的部分-Content,Content在XNA中是存放所有遊戲會使用到的相關資源檔如:遊戲用的圖片、遊戲的音效、文字等類型的項目資產,並透過編譯產生XNA所引入使用的xnb格式檔案。

開發XNA遊戲需要透過Content來找到資源路徑引入相關資源並建置出Xnb檔案供執行時使用,而Monogame雖然可以處理xnb的檔案格式,但是卻無法自己透過編譯產生xnb檔案(不過這部分未來可能會解決),於是這也是這篇文章的主要目的,我們需要透過一些迂迴的方式來達到使用載入這些資源的方法,讓我們來跟著一下步驟:

1.加入Windows Phone Library

由於我們無法在Monogame上建置出Xnb檔案,所以我們要借助XNA來幫我們建置,但是我們之前有提到XNA已經不支援在Visual Studio 2102上開發、Windows 8 上執行了,那我們又要怎麼使用XNA呢? 


這時候我們就要借助Windows Phone SDK 8啦,因為開發Windows是的,安裝Windows Phone SDK 8後你的Visual Studio 2012就會出現XNA Game Studio的選項(因為Windows Phone SDK 8中仍然包含開發Windows Phone 7.5,而開發Windows Phone 7.5的遊戲仍然是使用XNA來開發),而我們就借用Windows Phone Library來作為我們Monogame專案的相依性參考專案,在這邊我們命名為DummyLibrary

在這邊我們只需要用到Windows Phone Library來為我們編譯出Xnb檔案,所以Class可以移除掉不用。

2.加入Windows Phone用的Empty Content

為什麼我們要加入這個Content?因為不透過這個Content專案便無法到出編譯出Xnb檔案的動作,我把它命名為HelloContent

這時候在你的方案下就會包含:Monogame專案、Windows Phone Libray專案與XNA的Content專案。

3.對DummyLibrary專案(Windows Phone Library)右鍵->做新增內容參考,並把HelloContent參考過來

因為我們在開發一般的XNA框架遊戲時都會需要用到Content專案來為我們加入資源,之後整個方案在編譯時,便會透過Content把資源編成Xnb檔案並放置到XNA的遊戲專案,供XNA遊戲執行時可以取得Xnb當案並載入資源使用。

而一般XNA專案是預設把遊戲專案與Content專案繫在一起,但在這邊我們由於是使用Windows Phone Library所以需要手動繫在一起。

參考後便會如下圖,DummyLibrary參考了Content專案

4.對Monogame專案加入相依性

把Monogame專案與DummyLibrary(Windows Phone Library)做一個相依性,這樣可以確保在編譯遊戲專案前先編譯DummyLibrary

5.編譯方案並取得Xnb檔案

在這邊我們先加入一張圖片到HelloContent中並對方案做編譯

此時你便會看到DummyLibrary\Debug\HelloContent這個目錄下產生了Xnb檔案(而這也是我們需要的! 有了他Monogame便可以載入圖檔資源!!)

6.在Monogame專案中新增Content資料夾,並把剛剛的Xnb檔案加入為連結!

為什麼是加入連結呢?因為這樣資後檔案改變時,透過連結便可以拿到改變後的圖檔Xnb

再來我們對著編譯好並加入到Content的連結Xnb檔案做右鍵->屬性->建置,改成內容,代表他是Content這樣Monogame才會把他認為Content

透過上述的相依性指定DummyLibrary,而DummyLibrary又參考HelloContent專案,以後只要把圖片放入HelloContent並做一個編譯動作時,由於Monogame專案是相依DummyLibrary,便會先建置DummyLibrary,並由HelloContent編譯出Xnb檔案,而我們在透過建置加入連結Xnb並設定建置為內容來讀取Xnb檔案加入資源!

結論

雖然以上的步驟繁瑣,但是Monogame仍然有其使用的好處

1.開發一次、跨平台性執行,使用Monogame的專案仍然可以上架

2.加入採用了資源豐富、適合學習遊戲邏輯開發的XNA框架(本人認為)

所以仍然是可以把Monogame作為一個開發遊戲時使用的框架考量

參考資料

MonoGame For Windows 8 Step 2 – Content

Contrassegni:
Per informazioni complete sulle ottimizzazioni del compilatore, consultare l'Avviso sull'ottimizzazione