Windows Phone 7 XNA游戏结构分析
通过上面的例子,可以创建一个在Windows Phone 7平台下运行的比较简单的XNA游戏项目。下面对例子中的代码进行一次浅析,使大家在做XNA项目的框架时有一个概念上的理解。
1)GraphicsDeviceManager:在XNA类库介绍中提到的该类型是非常重要的。它为开发者提供方法来管理目标设备的显卡资源。简单地说就是调用显卡的一个接口,该对象的GraphicsDevice属性代表当前目标设备的显卡。
2)SpriteBatch:该对象主要的作用是绘制文字和2D图像。在游戏开发过程中,它的作用是非常重要的,因为游戏需要大部分图片、文字和声音等素材资源。所有游戏中需要显示的画面都必须经过SpriteBatch对象中的Draw方法来绘制。
3)Initialize( ):该方法用来初始化游戏程序的变量和对象。它允许游戏在运行之前做一些初始化的工作。可以在此查询任何需要的服务和载入与图形无关的内容。例如,显卡设备、游戏分数设置等。
4)LoadContent( ):当初始化完毕后,程序就进入LoadContent,该方法用来加载游戏的素材,包括游戏的模式、声音、图像等。这个方法在一个游戏中只会被调用一次,并且是加载所有素材的地方。
5)Update( ):该方法相当于Direct3D中的FrameMove,简单地说就是在图形上修改当前画面。它主要用于游戏执行一些逻辑,如:刷新画面、检查碰撞、更新分数、检测游戏进程、收集输入数据以及播放音频等。
6)Draw( ):该方法相当于Windows编程的Paint或者OnPaint,是系统自动绘图的方法。
游戏程序执行完LoadContent后,开始进入一个游戏循环,无论用什么语言编写游戏程序,都需要一个游戏循环,这也是游戏程序与应用程序的最大区别。在XNA游戏项目中,游戏循环主要由Update和Draw两个方法组成。XNA的生命周期如图4-8所示。
▲图4-8 XNA的生命周期
从图4-8中可知,当游戏程序执行完Initialize、LoadContent方法后,即初始化图像、声音和输入控制器,载入游戏资源(图片、声音等)后开始进入游戏循环,Update方法有两个出口,如果游戏继续运行,则执行Draw方法;如果游戏结束,则执行UploadContent方法。