我知道它返回父层次结构中找到的给定组件,但是按什么顺序?我需要知道,因为我想用它来初始化我的脚本,并且我必须先初始化父母,然后初始化子元素(因为较低层次的组件使用他们直接父级的计算值)。
发布于 2017-02-21 18:43:06
GetComponentsInChildren的统一文档并不能保证特定的返回顺序--因此,即使您在当前版本中找到了确定的顺序,当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
}
}注:这将在直接子女之前初始化直接父母--但不会在侄女/侄子之前初始化姑姑/叔叔。
https://stackoverflow.com/questions/42375242
复制相似问题