我正在开发一个爱好游戏引擎,我目前有这些类:(简化)
class Scene {
GameObject* m_root;
GameObject*[] m_gameObjects[];
}
class GameObject {
GameObject* m_parent;
GameObject*[] m_children;
}
当前实施:
第一个问题:
我是否应该维护这个数组,还是应该在一段时间内从根目录中查看树?
哪一种更适合标准使用? (比如调用所有对象的更新,搜索对象等)
第二个问题:
我应该如何从特定游戏对象访问root?
构建根目录时,我应该将根作为静态字段存储在GameObject类中吗?
或者我应该通过父母直到找到一个没有父母的对象?
通过父母的意思是我的意思:
GameObject* root = this;
while(root->GetParent() != null) {
root = root->GetParent();
}
return root;
我觉得在这两种情况下“穿越树”方法都更好。
答案 0 :(得分:2)
第一个问题 如果数组的唯一用法是遍历对象,那么我说它是多余的。如果数组的索引具有某种意义,并且它允许您更快地访问特定对象,那么可能会有一些好处。
第二个问题 我完全避开了可变类静态变量。它们基本上等同于全局变量。