现在的位置: 首页 > 综合 > 正文

Win8 Metro App里玩XNA:框架问题解决方案

2011年12月08日 ⁄ 综合 ⁄ 共 2339字 ⁄ 字号 评论关闭
  华丽的铺垫

XNA的介绍是,XNA是基于DirectX的游戏开发环境,是微软对于Managed DirectX 的修正及扩充版本。XNA中的X表示能够在WindowsXbox和合作伙伴之间达到跨平台的强大的软件工具。N表示“下一代(Next-generation)”,A表示“架构(Architecture)”。在很长的一段时间XNA备受关注,毕竟C#的学习成本要低的多,但是很悲催的是微软下一代的操作系统WinRT中,至少说Windows8里并不源生支持XNA,当然了,VS2012开发工具里也没有内置,写到这里可能会被大家认为是吐槽,好吧,我想说的是VS2010也没有带XNA,也许不久的将来XNA Studio 5.0或者4.8什么的会出个SDK安装。

这个问题却影响到了很多开发者,要知道,XNA真正所被大家用的风生水起却是在WindowsPhone7上,WindowsPhone7官方引导开发游戏用XNA,一些朋友直接或间接的原因在XNA上走出较远路程,例如深蓝色右手马宁ElvisWilliams……现在Windows8中的Metro(现在叫Modern)Application还不能支持XNA,至于什么时候,呵呵等吧,WinRT官方的引导是使用DirectX C++或者JS开发游戏应用,至于说XAML/C#(其实就是Silverlight)之类的被扔进了应用方面,其实Silverlight也能做出好的游戏,这点完全可以通过最近在搞的一个游戏产品证明。

如果说XNA现在不能上Win8,就意味着开发者们要转换技术,就意味着之前的玩意全部成为了过去,就意味着对平台的怀疑,就意味着可能性的流失……您让我们情何以堪啊……

  这才是主题

前段时间终于盼到了MonoGame支持了Win8 Metro(Modern)UI,这样就可以在VS2012里建XNA项目,等等,MonoGame是什么?好吧,一句话说,这是一群酷B的开发者想在所有平台上跑XNA的开源框架,建立在MonoDevelop基础上使用SharpDX开发,而MonoDevelop是一群更加酷B的开发者想在所有平台上跑C#的酷B事业(例如Unity3D的C#编译器,例如某MMO的跨平台,额,你知道的太多了。),SharpDX是C#语言去编写DirectX的酷B类库。当大家知道这三个都是开源的话,就知道为啥激动地重复说酷B啦。

MonoGame:http://monogame.codeplex.com/ https://github.com/mono/MonoGame
MonoDevelop:http://monodevelop.com/
SharpDX:http://sharpdx.org/

其实对于纯粹的做开发而言MonoDevelop是不需要的,只需要MonoGame和SharpDX,但是MonoDevelop有它独特的作用,在以后我们就会碰到。

如果你看过之前的园子里另外两位所发的介绍在Windows 8 里玩MonoGame文章,应该并不陌生,他们分别是:suguoqiang(抱歉少年,不知道你怎么称呼)、xnagame(凯威同学)

但很可惜介绍的不太全面,无法马上直接应用,如果解决不了的话很容易放弃,那么我来详细介绍一下如何弄环境:

----------------------------------------------------
首先需要……(大约3000字,附图5张)
----------------------------------------------------

好吧,我知道大家懒得看这么多字和图,其实我也懒得写,对于有耐心读到这里的朋友,心中就一个问题:“怎么在Win8里玩XNA?Mono神马的跟哥有毛线关系!”,那么用三段解决这个问题吧。

首先你下载一下这个模板:http://files.cnblogs.com/nowpaper/ProjectTemplatesCSharp.rar

注意,这一切最好在Windows8里进行,以及确保拥有VS2012的开发环境,这个模板在MonoGame工程里有提供,但是直接使用是不行的,因为少了很多东西,所以我在MonoGame的VS2012 temple原版的基础上做了一些修改,把所缺的全部补齐,使用者完全不需要去安装和部署各种乱七八糟的环境。

然后解压到VS2012的模板目录,通常在这里:%USERPROFILE%\Documents\Visual Studio 2012\Templates\ProjectTemplates\Visual C#

在这里面建立了一个XNA目录,主要是方便将来找起来这个模板方便。

最后打开VS2012新建工程,在Visual C#里找到MonoGame模板,建立程序。

注意Lib目录中的文件,这是必备的类库,已经将其补全,不用担心少什么。

现在打开Game1.cs,感动吧,熟悉的XNA回来了哦,可以运行一下看看,然后Esc关闭,在Metro界面里找一下。

在运行中,你会发现鼠标是不可见的,需要在Game构造函数里面写上一句:IsMouseVisible = true;

这个例子你可以在这儿下载:点击这里下载 本例可以独立运行,不用安装模板,因为实在太懒了,不想每次都得安装半天各种各样的神奇玩意。

写到这里,我们可以看到一个很有意思可能,是不是XNA的游戏都可以通过这种方式转移到Win8上?通过测试,这是肯定的,WindowsPhone7上XNA的游戏完全可以移植,但是尚有一些问题还未解决,例如Content资源如何处理等等,那么在下一篇将使用一个WindowsPhone XNA游戏移植到Windows8里,敬请期待吧,少年。

抱歉!评论已关闭.