摘要上一回我们为大家介绍了如何使用 Visual Studio 2010 或 Visual Studio 2010 Express for Windows Phone 设计以 XNA 为基础的 Windows Phone 7 游戏程序,并了解以 XNA 为基础的游戏程序的基础架构与核心功能。这一回我们将要为大家介绍 XNA Framework 支持游戏程序制作的重要类别,做为开发游戏程序的基础知识。除此之外,我们也将利用本文所介绍的类别实作一个简单的游戏程序,并令其具有能够不断卷动的背景图案。
<ignore_js_op>class="zoom" title="ee904170.bullet_title(zh-tw,MSDN.10).gif" src="/Upload/Images/2014090510/DEFCAA439549F748.gif" alt="ee904170.bullet_title(zh-tw,MSDN.10).gif" width="11" /> GraphicsDeviceManager 类别第一个要介绍给大家认识的是负责管理绘图装置的 GraphicsDeviceManager 类别。以 XNA 为基础的游戏程序必须在初始化的时候建立妥 GraphicsDeviceManager 类别的对象,并设定包括游戏程序窗口高度与宽度在内的必要属性,做为显示游戏内容的基础。有关于游戏程序初始化阶段建立 GraphicsDeviceManager 类别的对象的详细做法可以参考 [设计以 XNA 为基础的 Windows Phone 7 游戏]一文的说明。表1 所示即为 GraphicsDeviceManager 类别常用的属性:
表1:GraphicsDeviceManager 类别常用的属性
GraphicsDeviceManager 类别常用的方法请参考表2 的说明:
表2:GraphicsDeviceManager 类别常用的方法
游戏核心类别以 XNA 为基础的游戏程序的主体是 Game 类别,也是做为游戏程序主体的 Game1 类别的基础类别。游戏程序可以利用 Game1 类别的 Update 方法更新游戏的状态,利用 Draw 方法显示游戏的内容。表3 所示即为 Game 类别的常用属性:
表3:Game 类别常用的属性
Game 类别常用的方法可以参考表4 的说明:
表4:Game 类别常用的方法
如果程序设计师要以模块化的方式设计游戏程序,可以将游戏的人物制作成 GameComponent 类别或是 DrawableGameComponent 类别,再将 GameComponent 类别的对象或是 DrawableGameComponent 类别的对象加入到 Game 类别的对象的 Conponents 集合中,由 Game 类别的对象统一管理,把复杂的游戏人物的初始化、状态更新、以及更新显示等动作封装在 GameComponent 类别或是 DrawableGameComponent 类别中,可以有效简化 Game 类别的控制逻辑。当游戏人物众多,角色复杂时,适当地利用 GameComponent 类别或是 DrawableGameComponent 类别可以提升游戏的可维护性,利于发展功能进阶,效果复杂的游戏。
XNA Framework 提供的 GameComponent 类别和 DrawableGameComponent 类别的差别在于 DrawableGameComponent 类别管理的是有用户接口的游戏组件,而 GameComponent 类别所管理的则是没有用户接口的游戏组件。换句话说,DrawableGameComponent 类别提供了 GameComponent 类别未支持的 LoadContent 方法和 Draw 方法,以便执行加载所管理的游戏资源和显示游戏的内容的工作。
当建立好 GameComponent 类别的对象或 DrawableGameComponent 类别的对象之后,只要将 GameComponent 类别的对象或 DrawableGameComponent 类别的对象加入到 Game 类别的对象的 Components 集合中,GameComponent 类别的对象或 DrawableGameComponent 类别的对象的 Update 方法就会被持续地呼叫,而 DrawableGameComponent 类别的对象的 Draw 方法也会在适当的时机被呼叫,并将游戏的内容显示到窗口中供用户操作。
欲为游戏程序项目加入 GameComponent 类别或 DrawableGameComponent 类别,可以使用鼠标的右键点中 [Solution Explorer] 窗口中的项目名称,从出现的菜单选择 [Add | New Item] 功能,屏幕上就会出现要求选择欲加入到项目的项目的窗口,如图1 所示:
图1:要求选择欲加入到项目的项目的窗口
详细说明:http://wp.662p.com/thread-8084-1-1.html