1
我工作的一個愛好遊戲引擎,和我有現在這些類:(簡體)對象層次實現
class Scene {
GameObject* m_root;
GameObject*[] m_gameObjects[];
}
class GameObject {
GameObject* m_parent;
GameObject*[] m_children;
}
當前實現:
- 當我添加遊戲對象添加到場景中,我還將其添加爲m_root的子元素,並將其添加到場景的遊戲對象數組中。
第一個問題:
- 正如我所說的,目前我也是遊戲對象的指針存儲在數組中,所以我可以通過他們輕鬆地重複。
我是否應該維護這個數組呢?還是應該在一個while循環中從根節點通過樹?
哪一個更適合標準使用? (就像調用所有對象的更新,搜索對象等)
第二個問題:
我應該如何從一個特定的遊戲對象訪問根?
當我構建根時應該將根存儲爲GameObject類中的靜態字段嗎?
或者我應該只是通過父母,直到我找到一個沒有父母的對象?
我的意思是通過家長會什麼:
GameObject* root = this;
while(root->GetParent() != null) {
root = root->GetParent();
}
return root;
我感覺到,「經歷樹」的方法是在這兩種情況下更好。