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,那么就可兼容两版本的设备。