我知道它返回在父级层次结构中找到的给定组件,但是按什么顺序?我需要知道,因为我想用它来初始化我的脚本,并且我必须首先初始化父级,然后再初始化子级(因为较低层次结构的组件使用其直接父级的计算值)。
GetComponentsInChildren 的 Unity 文档不保证特定的返回顺序 - 因此,即使您在当前版本中找到确定性顺序,当 Unity 发布更改该确定性顺序的新版本时,它也可能会被破坏。因此,您需要在自己的代码中强制执行父初始化优先保证。实现此目的的一种方法是迭代转换:
void InitializeHierarchy(Transform root)
{
var initializable = root.GetComponent<Initializable>();
if(initializable != null) initializable.Initialize();
foreach(Transform t in root)
{
if(t == root) continue; //make sure you don't initialize the existing transform
InitializeHierarchy(t); //initialize this Transform's children recursively
}
}
注意:这将在直接孩子之前初始化直接父母 - 但是它不会在侄女/侄子之前初始化阿姨/叔叔。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)