2012-03-02 99 views
1

我正在製作策略遊戲並遇到了一種問題。基本上,我不知道如何處理我需要的單位的動態創建。我應該使用一些大開關語句還是有更理想的解決方案?處理多個對象

回答

2

我假設,你實質上是在討論在運行時實例化不同種類的類。的用途很多:)

一種選擇是:

你管理一個地圖(基本對象),其中關鍵是你的「單位」的標識和值是一個類的對象,像這樣:

var unitMap:Object = { 
    "hero": UserGameCharacter, 
    "enemy": NPCharacter, 
    "chicken": ChickenCharacter 
}; 

請注意,值是類對象,而不是實例。此外,讓我們假設,所有字符類都擴展了基本的Character類或實現了Character接口。現在,當你想實例化一個「單元」時,你應該這樣做:

var newCharacter:Character = new (unitMap["hero"])(); 

這樣,你就不需要switch語句了。希望,這有助於作爲一個起點。

+0

呃... ...所以基本上創造這樣一個枚舉,然後用字符對象作爲我需要創建類的容器,對不對?但是,如果我需要,我將如何能夠使用對象構造函數?像unitMap [「hero」](arg)會有用嗎? – MKII 2012-03-02 10:00:23

+0

是的,正確的,這將工作。順便說一句,當然,你也可以直接引用你想創建的類。我只是想,如果你創建的類都是擴展基類或者實現一個接口以方便使用,那可能會很有幫助。這就是我所說的「人物」。 – ghost23 2012-03-02 14:38:27

+0

好吧,我明白了。謝謝。 – MKII 2012-03-03 02:09:50

1

如果您希望動態創建需要構建工作的多種類型的實體,請嘗試始終使用抽象工廠。它會讓你的遊戲更加靈活和模塊化。特別是對於策略遊戲,您可能會有複雜的邏輯來構建每個單元。看看下面的文章:

http://www.as3dp.com/2010/11/saturated-abstract-factory-1-wholesale-creation/

+0

我的時間有限(因爲這個遊戲是一個大學項目),所以我可能無法在截止日期前理解和實施上述解決方案,但看起來還是值得一看。謝謝。 – MKII 2012-03-03 02:08:35

1

您可能也想看看按鈕引擎,它會提供一些現成的功能來處理所有不同的遊戲對象。它具有依賴注入功能,這是分離對象的使用和創建的良好實踐。

https://github.com/PushButtonLabs/PushButtonEngine

+0

像上面這樣,我會盡快詳細看看。謝謝。 – MKII 2012-03-03 02:16:57