Windows 8 RTM來了,vs2012正式版本也來了,在vs2012中開發Windows 8 Metro應用程序視乎不再現實,monogame跨平台XNA游戲引擎解決XNA不能開發Metro的問題,只需要很小的改動,直接可從桌面程序遷移代碼到Metro中。
桌面程序:
Windows 8 Metro
至於怎么安裝MonoGame,參考以下博文:
安裝Mono模版
http://www.cnblogs.com/xnagame/archive/2012/07/29/2613899.html
安裝完成,就可運行程序了。至於怎么遷移桌面的代碼到Metro中,首要解決的問題在管道Content問題。Visual Studio2012沒有XNA開發的原生支持,MonoGame不會有一個實施的內容管道的。
一篇外國博文介紹該問題的解決
http://blogs.msdn.com/b/bobfamiliar/archive/2012/08/07/windows-8-xna-and-monogame-part-3-code-migration-and-windows-8-feature-support.aspx
這里就簡單的介紹一下:
XNA生成的內容管道Content只能用Visual Studio 2010,至於Windows 8中安裝XNA的問題,網上有解決方法(步驟大概是先要安裝wp7.1,里面包含了XNA4.0的安裝程序,這樣就不需要切換win7和win8了)。准備工作完成后,就要做將實施以下步驟:
第1步。在VS 2010中創建的XNA Game Studio項目
第2步。添加您的圖形,聲音,字體和其他的游戲資產的內容項目
第3步。編譯項目
第4步。從這個位置復制XNB文件
C:\Users\[you]\Documents\Visual Studio 2010\Projects\[project name]\[project name]\[project name]\bin\x86\Debug\Content
如
打開Content中可看到編譯過的資源文件
只需將所要的Content文件復制到vs2012的以下文件中
C:\Users\[you]\Documents\Visual Studio 2012\Projects\[project name]\[project name]\bin\Debug\AppX\Content
如:
請注意您的VS2012項目文件夾樹中的目標位置是AppX中文件夾下。這是該文件夾包含所有的項目要部署的資產。
現在你可以使用ContentManager對象在運行時,你會在任何XNA應用程序加載你的游戲資產。
最后就是代碼的遷移了,我是直接將現有項附加到Mono的解決方案中,然后重命名namespace
然后編譯代碼,會有錯誤,直接附加的一個文件有錯誤
然后我直接將其刪除,編譯后沒任何問題,一模一樣。小問題是,桌面XNA可設置窗口大小,Metro是全屏。可能還會有小問題,不斷地摸索前進。至少現在可用XNA開發windows 8 Metro了。
兩版本代碼對比:
還有的是winows phone 8開發XNA的問題,從提前曝光的winows phone 8 SDK中看,視乎XNA是不能創建windows phone8的程序了,至於會不會有后續支持,也不知道。但微軟說winows phone 8能夠完全兼容windows phone 7.X的程序,那么,直接用XNA可windows phone7.X,那么就可兼容兩版本的設備。