我正在製作策略遊戲並遇到了一種問題。基本上,我不知道如何處理我需要的單位的動態創建。我應該使用一些大開關語句還是有更理想的解決方案?處理多個對象
處理多個對象
回答
我假設,你實質上是在討論在運行時實例化不同種類的類。的用途很多:)
一種選擇是:
你管理一個地圖(基本對象),其中關鍵是你的「單位」的標識和值是一個類的對象,像這樣:
var unitMap:Object = {
"hero": UserGameCharacter,
"enemy": NPCharacter,
"chicken": ChickenCharacter
};
請注意,值是類對象,而不是實例。此外,讓我們假設,所有字符類都擴展了基本的Character類或實現了Character接口。現在,當你想實例化一個「單元」時,你應該這樣做:
var newCharacter:Character = new (unitMap["hero"])();
這樣,你就不需要switch語句了。希望,這有助於作爲一個起點。
如果您希望動態創建需要構建工作的多種類型的實體,請嘗試始終使用抽象工廠。它會讓你的遊戲更加靈活和模塊化。特別是對於策略遊戲,您可能會有複雜的邏輯來構建每個單元。看看下面的文章:
http://www.as3dp.com/2010/11/saturated-abstract-factory-1-wholesale-creation/
我的時間有限(因爲這個遊戲是一個大學項目),所以我可能無法在截止日期前理解和實施上述解決方案,但看起來還是值得一看。謝謝。 – MKII 2012-03-03 02:08:35
您可能也想看看按鈕引擎,它會提供一些現成的功能來處理所有不同的遊戲對象。它具有依賴注入功能,這是分離對象的使用和創建的良好實踐。
像上面這樣,我會盡快詳細看看。謝謝。 – MKII 2012-03-03 02:16:57
- 1. 處理多個JSON對象
- 2. 處理多個對象,如一個 - WPF
- 3. 在Google雲中處理多個對象
- 4. 對象字面處理多個實例
- 5. 多處理Python類對象
- 6. 如何處理多個相關對象(在對象中嵌套)
- 7. 處理對象
- 8. 在python多處理中修改對象
- 9. 使用對象進行多處理?
- 10. NUnit-對象處理
- 11. JavaScript對象處理
- 12. 處理StringBuilder對象
- 13. 處理 - mouseOver對象
- 14. WCF處理對象
- 15. 處理System.Drawing對象
- 16. 多個WS調用一個動作,如何處理Promise對象?
- 17. 在一個文件中處理多個JSON對象
- 18. 一個ActiveScheduler可以處理多少個活動對象?
- 19. 導軌處理單個和多個返回對象
- 20. 非DOM對象的JavaScript事件處理(註冊多個處理程序)
- 21. 多處理共享對象中的共享對象
- 22. 刪除處理程序處理對象
- 23. 處理多對多實體
- 24. PHP - 將對象作爲對象處理
- 25. 處理:一個對象忽略語句
- 26. 如何處理對象到一個NSMutableArray
- 27. 處理兩個對象數組
- 28. spring批處理 - 將對象數據寫入多個文件
- 29. 處理多個對象時的良好編程風格
- 30. 如何使用ID在批處理中刪除多個對象?
呃... ...所以基本上創造這樣一個枚舉,然後用字符對象作爲我需要創建類的容器,對不對?但是,如果我需要,我將如何能夠使用對象構造函數?像unitMap [「hero」](arg)會有用嗎? – MKII 2012-03-02 10:00:23
是的,正確的,這將工作。順便說一句,當然,你也可以直接引用你想創建的類。我只是想,如果你創建的類都是擴展基類或者實現一個接口以方便使用,那可能會很有幫助。這就是我所說的「人物」。 – ghost23 2012-03-02 14:38:27
好吧,我明白了。謝謝。 – MKII 2012-03-03 02:09:50