第三章 輔助類
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 years。Just add functionally or your own helper classes whenever you need them。當您解決了一個問題之後,覺得它不會再被使用,就留著它不用再管它了。但當您發現要把一些功能代碼複製到一個新的項目中或者另一個類中,而且會複製很多次,您就應該考慮把其中的處理邏輯提取出來放到一個特殊的類中。
另外,您還將學習到更多有關前幾章中使用的內容管道的知識,來支援Xbox 360。可以直接載入texture和shader而不使用內容管道,但只能在Windows平台上這麼做。如果您想做一個跨平台的遊戲,就得確保在Windows和Xbox 360上所有的東西都能編譯並正常工作。本書中您將一直這麼做。
本章結尾您將快速開發一個Breakout遊戲的複製版本,而且因為您先寫了所有的輔助類,實現它要比在前幾章中簡單了許多。例如,使用SpriteHelper類來渲染sprite會非常簡單。下一章您將接觸到更多可以改進Pong和Breakout遊戲的輔助類和遊戲組件。