《XNA進階編程:Xbox 360和Windows》4-2

來源:互聯網
上載者:User
4.2 Game類

     前幾章您已經使用過了Game類,但這些章主要講的是從Program類和單元測試中調用Run方法來啟動遊戲,以及如何使用Initialize、Update和Draw等方法,並沒有討論基本的設計。當然,如果做的只是一些簡單的遊戲,掌握這些知識就夠了。但隨著遊戲的規模逐漸層大以及需要更多的遊戲特性,您或許就需要好好考慮遊戲類的設計了。

     Game類中提供了儲存圖形裝置的GraphicsDeviceManager執行個體以及儲存內容組合管理的相應變數。然後,在Program類中建立您的遊戲類執行個體,並調用其Run方法就可以運行遊戲了。和以往使用託管DirectX和OpenGL不同的是,現在您不必再去管理您自己的遊戲視窗、建立遊戲迴圈、處理Windows訊息等等,這些工作XNA都已經幫您做好了。正因為如此,您可以將您的遊戲放到沒有視窗類別以及Windows事件的Xbox 360平台上運行!

     您可以使用遊戲類的Window屬性來對遊戲視窗進行相關操作,比如設定視窗標題、是否允許使用者更改視窗大小、調用底層的Windows控制代碼進行互操作等等。所有這些方法在Xbox 360平台上是不起作用的,在Xbox 360上沒有視窗,沒有視窗標題,當然也無法改變視窗大小。正如在上一個遊戲中,您使用了Window.Title屬性來設定簡單的文本以向使用者顯示當前層級以及分數。這樣做是因為XNA不支援字型,要想在螢幕上顯示文本,您得自己建立位元影像字型並逐一渲染所有的字母。在接下來的幾個遊戲以及本章的俄羅斯方塊遊戲中,您都將用到該特性,稍後將介紹為此而建立的TextureFont類。

     另外值得一提的是,您可以在遊戲類的建構函式中使用下面的方法設定自己偏愛的解析度,這個例子使用了1024×768的全螢幕模式:
graphics.PreferredBackBufferWidth = 1024;
graphics.PreferredBackBufferHeight = 768;
graphics.IsFullScreen = true;

     當然,並不能保證遊戲就會正確地在所設定的解析度下運行。比如,如果在一個最高只支援1024×768解析度的系統上設定了1600×1200的解析度,那麼遊戲將使用可用的最大解析度。

     您已經知道,遊戲在渲染每一幀的時候都要調用Update和Draw方法,but how do you incorporate new game components
without overloading the game class itself ?
下面就來看一下Tetris遊戲的類以及組件設計關係圖(4-1所示)。


圖4-1


     可以看到,這裡有三個遊戲類,而不是像之前的遊戲那樣只有一個,這樣做是為了使主遊戲類更加簡短。BaseGame類儲存圖形裝置管理員和內容組合管理,以及遊戲當前使用的解析度的寬度和高度值。Update和Draw方法處理新的Input、Sound以及TextureFont類,這樣在主遊戲類中就不用再更新它們。TetrisGame類用來從內容管道載入所有的映像,初始化所有的sprites和遊戲組件,這些將在稍後介紹。

     最後,TestGame類繼承自TetrisGame類,以便訪問所有的textures,sprites以及遊戲組件,它只用於偵錯模式下來進行單元測試。TestGame類的功能和前幾章的很類似,不過在這裡它被從遊戲主類中分離出來,以一種更好的方式進行組織。TetrisGame類使用了幾個單元測試,以確保遊戲的每個部分都能按照預期正常運行。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.