我的GameObject
我的基於組件 - 遊戲引擎抽象的實現如下:優勢和數組和地圖之間的缺點遊戲對象
遊戲對象
- 唯一ID
- isActive flag
- 組件數組
我一直在閱讀關於基於組件的設計,並且引起我注意的一件事是由於緩存導致數組的線性遍歷很快,所以這使我決定使用基本數組來保存實體/遊戲對象。
現在另一件引起我注意的事情是有些資源將組件從遊戲對象中分離出來。他們所做的是在一個實體經理內部有一張地圖。該地圖將遊戲對象作爲鍵和作爲值的組件數組。在這種情況下,A GameObject
只有一個ID。
是否有一個優勢(性能和/或設計明智)有一個地圖附加遊戲對象的組件,而不是在GameObject
類內的組件?
此外,GameObject
s將從Pool
對象合併(循環),以避免頻繁的內存分配。
如果'GameObject'有一個組件數組,你的對象的大小是很大的,因爲它包含了它的東西。如果你有一張保持這種相關性的地圖,那麼'GameObject'的創建/複製/刪除便宜得多。話雖如此,我還建議你考慮'std :: vector'來保存你的組件,雖然這是你原來的任務的正交關係。 – CoryKramer
如果一個'GameObject'已經有了它的組件的引用,並且maps鍵是'GameObject's,那麼這個映射就完全沒用了。一般來說,地圖用於通過某些鍵提供對值的快速訪問,例如'Map'可能有意義。 –
我澄清了一下。在地圖情況下,'GameObject's只有一個ID而不是組件數組。 – starhacker