首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >GetComponentsInChildren<T>()返回顺序

GetComponentsInChildren<T>()返回顺序
EN

Stack Overflow用户
提问于 2017-02-21 18:32:46
回答 1查看 5.2K关注 0票数 5

我知道它返回父层次结构中找到的给定组件,但是按什么顺序?我需要知道,因为我想用它来初始化我的脚本,并且我必须先初始化父母,然后初始化子元素(因为较低层次的组件使用他们直接父级的计算值)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-21 18:43:06

GetComponentsInChildren的统一文档并不能保证特定的返回顺序--因此,即使您在当前版本中找到了确定的顺序,当Unity发布了一个更改确定性顺序的新构建时,它也很容易崩溃。因此,您需要在您自己的代码中强制执行父-初始化-第一保证。这样做的一种方法是迭代转换:

代码语言:javascript
运行
复制
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
    }
}

注:这将在直接子女之前初始化直接父母--但不会在侄女/侄子之前初始化姑姑/叔叔。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42375242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档