欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

如何在WP7上用XNA写2D游戏(二)

程序员文章站 2022-04-12 08:40:04
准备写一系列xna里设计2d游戏的文章,这是第一章。             &n...

准备写一系列xna里设计2d游戏的文章,这是第一章。

 

                                              1.xna里的hello world

 

1.1创建xna游戏开发项目

      我们初学程序的时候,总是爱写一个hello world 来体验下。可以说写出hello world 是我们了解一个语言或者框架最简单的做法。那么我们如何在wp7(windows phone 7)里用xna游戏框架在屏幕输出hello world呢。

其实微软的开发工具对开发者而言是很友好的。我们打开vs2010 express for windows phone,选择file->new project菜单,新建项目xnagamesample,如图1-1:

如何在WP7上用XNA写2D游戏(二)

                              图1-1

 

     于是我们看到如下图1-2这样的解决方案:

  如何在WP7上用XNA写2D游戏(二)

                           图1-2

         对这个解决方案,在右侧的解决方案资源管理器(solution explorer)里我们可以看到两个项目:

xnagamesample和xnagamesamplecontent.

        在我们项目储存的硬盘上我们可以看到图1-3这样的目录结构:

如何在WP7上用XNA写2D游戏(二)

                                                 图1-3

 

     其中xnagamesamplecontent项目是我们用来管理游戏资源文件的项目,我们以后用到贴图,模型,声音等资源都会放在这里管理。

     xnagamesample是我们的主项目。

     在xnagamesample项目里我们开打game1.cs文件,这是游戏运行的主入口,如图1-4:

如何在WP7上用XNA写2D游戏(二)

                                             图1-4

 

     在game1.cs里面有initialize,loadcontent,unloadcontent,update,draw五个方法。

那么这五个方法各自在游戏里起什么作用呢?在后面的章节里我们会了解到这五个方法各自的用途。

 

1.2 update 和draw

           从函数命名上,我们可以猜测得到loadcontent是负责加载游戏资源的。draw 是用来绘制游戏界面的。那么update呢,从字面意思上我们可以看到是”更新”的意思,那么这个方法里更新什么呢?

            举一个简单的游戏场景来说。如果我们绘制一个手拿盾牌的小兵,让他从手机屏幕的左边跑到右边,那么我们怎么做呢。

            首先,我们会用loadcontent来加载这个小兵所使用到的所有贴图资源。然后用draw 方法把贴图绘制到屏幕制定的位置。但是我们要求的是小兵是移动的,从左边跑到右边,在跑的过程中还涉及到帧动画的变化。那么这些问题我们都需要在update里来处理。简单来说,我们需要在update里改变小兵的坐标位置和变换所用到的贴图资源。

            我们需要了解的是update 和draw 在游戏运行过程中是按一定时间间隔不停被调用的方法,这样我们才能看到连续的动画。用流程图我们可以这样来描述:

            如何在WP7上用XNA写2D游戏(二)

      我们在wp7上写xna游戏的时候,需要了解一个很重要的概念,就是刷新率是多少?通俗的说,1秒钟draw和update 被调用多少次。

     只有弄清楚这个问题,我们才能控制2d游戏动画的播放速度。wp7里xna的刷新率默认为30fps.也就是说1秒钟draw 和update 要被调用30次。如图1-4,我们展开game1函数,可以看到如下代码:

        public game1()
        {
            graphics = new graphicsdevicemanager(this);
            content.rootdirectory = "content";

            // frame rate is 30 fps by default for windows phone.
            targetelapsedtime = timespan.fromticks(333333);
        }

        其中有一段英文注释是"frame rate is 30 fps by default for windows phone.",意思是windows phone 的默认fps是30.

 

1.3 loadcontent 和 unloadcontent

     在1.2章节里我们已经简单介绍了loadcontent和unloadcontent的作用,如果我们需要在wp7里输出一段文字,我们就需要用到loadcontent了,在xna里我们要经常接触到spritefont对象,这个对象是负责控制输出字体的,在xna里字体的样式我们需要用一个xml文件来控制。如图1-5,我们在xnagamesamplecontent项目里创建一个新的文件夹“fonts”,然后我们在xnagamesamplecontent项目里新建的fonts文件夹上点击右键选择add,然后选择new item,再选择sprite font ,把name改成default.spritefont,最后点击 add。

如何在WP7上用XNA写2D游戏(二)

 

                                                                                       图1-5

 

            然后,如图1-6,我们修改default.spritefont的内容为:

如何在WP7上用XNA写2D游戏(二)

 

                                                             图1-6

 

        做好了上面的准备工作,我们在game1.cs里增加一个新的对象font,然后在loadcontent函数里添加如下代码:

font = content.load<spritefont>("fonts/default");

        如图1-7:

如何在WP7上用XNA写2D游戏(二)

                                                                 图1-7

 

 

     接着在draw函数里写下如下代码:

         

   spritebatch.begin();
   spritebatch.drawstring(font, "hello world", new vector2(200,100), color.black);
   spritebatch.end();

 

     如图1-8:

如何在WP7上用XNA写2D游戏(二)

                                                                                    图1-8

 

     然后我们只需要在工具条的最右边选择"window phone 7 emulator"按下f5,在模拟器模式下就能运行这个小小的demo了,如图1-9:

如何在WP7上用XNA写2D游戏(二)

 

                                                                                     图1-9

            那么我们怎么要在真机上调试呢?在下一章节我们就会讲到。

1.3调试和部署xna项目

              首先,我们需要装上zune,我们的wp7手机也需要解锁。解锁需要我们拥有wp7开发者账号。注册地址:。如图1-10:

              tips:如果你有.edu的学生邮箱,又通过dreamspark认证,就可以免去$99的年费。

如何在WP7上用XNA写2D游戏(二)

                                                           图1-10

            准备好这些后,我们用数据线连上wp7真机,如果wp7被识别,会自动启动zune。如图1-11:

如何在WP7上用XNA写2D游戏(二)

                                                                                 图1-11

              然后我们在vs2010 express for windows phone的工具条最右边选择"windows phone 7 device"。再按f5。等几秒钟后,我们的项目编译后产生的xap文件就被部署到真机里运行了。

     demo源代码下载地址:
 

                                                                     

   本文版权属于williams所有