C++ 游戏引擎中对象层次结构的实现
我正在开发一个爱好游戏引擎,目前我有以下课程:(简化) 当前实施:C++ 游戏引擎中对象层次结构的实现,c++,tree,C++,Tree,我正在开发一个爱好游戏引擎,目前我有以下课程:(简化) 当前实施: 当我将游戏对象添加到场景中时,我还将其添加为m_根的子对象,并将其添加到场景的游戏对象数组中 第一个问题: 正如我所说,目前我还将游戏对象的指针存储在一个数组中,这样我就可以轻松地遍历它们 我应该也维护这个数组,还是应该在一段时间内从根遍历树 哪一个更适合标准用法?(如调用所有对象的更新、搜索对象等) 第二个问题: 如何从特定游戏对象访问根目录 当我构造根时,是否应该将根作为静态字段存储在GameObject类中 或者
- 当我将游戏对象添加到场景中时,我还将其添加为m_根的子对象,并将其添加到场景的游戏对象数组中
- 正如我所说,目前我还将游戏对象的指针存储在一个数组中,这样我就可以轻松地遍历它们
- 我应该也维护这个数组,还是应该在一段时间内从根遍历树
- 哪一个更适合标准用法?(如调用所有对象的更新、搜索对象等)
- 如何从特定游戏对象访问根目录
- 当我构造根时,是否应该将根作为静态字段存储在GameObject类中
- 或者我应该通过父对象,直到找到一个没有父对象的对象
GameObject* root = this;
while(root->GetParent() != null) {
root = root->GetParent();
}
return root;
我觉得“遍历树”方法在两种情况下都更好。第一个问题 如果数组的唯一用途是遍历对象,那么我认为它是冗余的。如果数组的索引具有某种意义,并且允许您更快地访问特定对象,那么可能会有一些好处 第二个问题 我会完全避开可变类静态变量。它们本质上等同于globals
GameObject* root = this;
while(root->GetParent() != null) {
root = root->GetParent();
}
return root;