Win8 Metro App里玩XNA:移植XNA游戏到Win8

  Ready !

在本文中,将把一个WindowsPhoneXNA的游戏移植到Win8 Metro(Modern)风格上,直接在Win8的界面里可以看到,而不是一个exe的执行程序,使用非常简便的方式就完成这个移植过程,移植其他更复杂的游戏也是大同小异,当然了如果你的应用里使用了大量的平台特性,你就得自行处理和更改,在本文中准备了一个XNA的游戏例子,该游戏是微软MSDN中的例子,叫做ChaseCamera的介绍摄像机工程,你可以直接到微软官方网站下载:http://xbox.create.msdn.com/zh-CN/education/catalog/sample/chasecamera

先看看在WP7模拟器上的运行效果:

Build完成之后,拷贝或切换到Windows8开发环境中,下一步就会使用到。

  In Windows 8

确保你有VS2012的开发环境,现在新建一个MonoGameApplication,选择新建项目->在Visual C#里找到MonoGame模板(这里不明白的参看前一篇《Win8 Metro App里玩XNA:框架问题解决方案》):

在项目里建立Content目录,在浏览器里找到刚才的ChaseCamera工程目录,打开bin\Windows Phone\Debug或者bin\Windows Phone\Release目录,你会发现Content目录,打开它将其中所有的文件(通常都是.xnb)全部添加到项目的Content目录下,将添加的所有文件的资源生成操作属性改为“Content”(“内容”)。

现在把代码文件拷贝过来,这需要一些注意的地方,例如在ChaseCamera里没有Game1.cs,而是ChaseCameraGame.cs,删掉原来的Game1.cs,然后将下面的文件添加到工程中:
ChaseCamera.cs
ChaseCameraGame.cs
Ship.cs

这些文件其实就是主要的逻辑代码文件,但是需要做一下修改,先删除掉原有代码文件中的程序入口点,如果你打算改工程的话,可以试试。

然后把原有的入口点中要开启的Game变成ChaseCameraGame,注意命名空间。

也许会有人问,就这么简单?是的!就是这么简单,运行一下看看吧。

看起来不错哦,但是这并没有完结,你会发现一个问题,就是添加的资源是.xnb文件,而不是真正的资源文件(.x、.bmp、.fbx),刚才我们使用了VS帮忙生成,其他的方式也有民间高手开发的xnb生成工具,但大多都是处理单一的内容,要么是生成Texture的要么是生成声音的,混合起来的没有找到,如果加之有自定义的内容管线,那就悲剧了,所以这是我们需要忍耐的问题:无法在Windows8的开发环境里直接得到xnb文件,如果哪位有好办法一定要不吝告知,泪奔中啊。。。

本例下载:请点击这里下载

细心的朋友一定会发现ChaseCamera实际上还有Windows版,打开研究之后其实代码和WindowsPhone版是一样的,如果玩玩的话其实对键盘也是支持的哦,最后可以落到本篇题目,XNA游戏借助MonoGame就完全能顺利的移植到Win8 Metro(Modern)风格下。

既然XNA已经如此顺林的在Win8里跑起来,那么在此之上的第三方XNA引擎是不是可以玩转Win8呢,这是完全没有问题的,例如cocos2d-xnanine engine……下一篇将介绍cocos2d-xna运行在Win8上的移植。

原文地址:https://www.cnblogs.com/nowpaper/p/2666544.html