第三章 辅助类

3.1本章概览

       我通常会把很多有用的小工具和类集中放在一个Helper命名空间中,慢慢地它们会变得非常有用。对于一个单一的项目来说,它们或许并不是最重要或最有使用价值的代码,但因为它们会被反复地使用,所以不管引擎的其它部分是否发生变化,辅助类总是引擎或项目中最稳定的部分。大多数辅助类和游戏编程都没有太大的关系,它们可以用于其它项目,甚至是Web应用。

       正如您在前一章看到的,不需要使用任何辅助类,也不需要使用任何额外文件和类,您就可以写出一个完整的游戏。但是随着项目的规模越来越大,您会发现大量的过去曾经解决了的重复模式和类似问题会再次出现。通常地,在XNA中大多数被重复使用的功能都是图形组件(graphic component),在下一章和本书的第二部分您将学习到更多有关游戏组件和图形引擎的知识。而本章则把重点放在最基本的功能上,比如记录消息(log message)、访问游戏内容(game content)、做单元测试、如何产生随机数字,以及其它很多小问题。

       为了让本章的内容更加有趣,您还将创建另一个小游戏,纯粹是为了好玩。虽然并不是所有的辅助类都会被使用,但是构建一个游戏引擎并不是一件简单的工作。所以,本章和下一章将从设计辅助类和游戏组件开始,这样在第二部分开发您自己的图形引擎就会容易一些。Please note that I did not write the helper classes in the way they are presented in this chapter; they evolved over the course of the past couple of yearsJust add functionally or your own helper classes whenever you need them。当您解决了一个问题之后,觉得它不会再被使用,就留着它不用再管它了。但当您发现要把一些功能代码复制到一个新的项目中或者另一个类中,而且会复制很多次,您就应该考虑把其中的处理逻辑提取出来放到一个特殊的类中。

       另外,您还将学习到更多有关前几章中使用的内容管道的知识,来支持Xbox 360。可以直接加载textureshader而不使用内容管道,但只能在Windows平台上这么做。如果您想做一个跨平台的游戏,就得确保在WindowsXbox 360上所有的东西都能编译并正常工作。本书中您将一直这么做。

       本章结尾您将快速开发一个Breakout游戏的克隆版本,而且因为您先写了所有的辅助类,实现它要比在前几章中简单了许多。例如,使用SpriteHelper类来渲染sprite会非常简单。下一章您将接触到更多可以改进PongBreakout游戏的辅助类和游戏组件。