Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 游戏引擎中对象层次结构的实现_C++_Tree - Fatal编程技术网

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;