正文

開發(fā)游戲引擎(5)

Windows移動游戲開發(fā)實戰(zhàn) 作者:(美)Adam Dawes


 

3. 啟動時的初始化

當游戲首次運行時,可能需要做一系列工作:加載圖形、準備一個成績排行榜表格、或者設(shè)置游戲控制按鈕。

我們將這些工作分為兩類:只在游戲首次加載時發(fā)生一次的工作,和潛在的每次游戲開始后要重復做的工作。

像準備成績排行榜表格這樣的功能需要在類的構(gòu)造函數(shù)中完成,不需要重寫任何游戲引擎函數(shù)。

那些可能需要再實現(xiàn)的功能可以放置到重寫的Prepare函數(shù)中(參見程序清單4-4)。在引擎進程的特定階段會再次調(diào)用該函數(shù);例如,當窗體大小發(fā)生改變時,會再次調(diào)用Prepare方法。因此,這就是說在該方法中要根據(jù)窗體的尺寸加載不同的圖形,并且要根據(jù)窗體尺寸設(shè)置一個游戲坐標系。在第9章使用該引擎構(gòu)建一個游戲時我們會詳細介紹。

如果您想支持多套不同的圖形集,那么在每次修改了選定的圖形后,也可以從游戲代碼中調(diào)用Prepare函數(shù)來重新初始化這些圖形。

基類本身并不執(zhí)行任何準備工作,所以可以只提供一個空的虛函數(shù),讓繼承類可以對其重寫。

程序清單4-4  Prepare 函數(shù)

/// <summary>

/// Virtual function to allow the game to prepare itself for rendering.

/// This includes loading graphics, setting coordinate systems, etc.

/// </summary>

public virtual void Prepare()

{

// Nothing to do for the base class.

}

4. 重置游戲

該函數(shù)用于準備引擎狀態(tài),使一個新游戲可以開始運行。該函數(shù)中要完成的任務(wù)包括將玩家得分重置為0并且進行清除,或者隨機設(shè)置一個游戲難度。上一次游戲中產(chǎn)生的任何信息都要被清空,這樣才不會對啟動中的新游戲產(chǎn)生影響。

要對類的構(gòu)造函數(shù)進行修改來使類在實例化時能夠調(diào)用Reset函數(shù)。

與Prepare函數(shù)一樣,我們也可以在基類中提供一個名為Reset的空的虛函數(shù),這樣所有從該類繼承的引擎類都能夠?qū)ζ溥M行重寫來執(zhí)行這些任務(wù)。

5. 渲染

一旦游戲完成對自身的更新,就需要將游戲中所有需要的元素呈現(xiàn)到屏幕上。我們將調(diào)用一個名為Render的函數(shù)來執(zhí)行該工作。正如您將會看到的,與渲染類型相關(guān)的繼承類會重寫該函數(shù),然后執(zhí)行繼承引擎本身所需要的所有工作,同時讓使用此引擎的游戲盡可能的簡單。

與游戲重置一樣,在基類中實際不需要做任何工作,所以我們只用簡單地提供一個空的虛函數(shù)即可。

6. 更新游戲狀態(tài)

所有與游戲相關(guān)的游戲功能將作為一個整體(如檢測游戲是否已經(jīng)結(jié)束)在Update函數(shù)中執(zhí)行。我們的游戲會重寫該函數(shù)來執(zhí)行需要的任務(wù),但是同樣,在基類中什么也不做,所以保留該函數(shù)為空。


上一章目錄下一章

Copyright ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號