gpt4 book ai didi

c# - Unity - GetComponentsInChildren() 返回顺序

转载 作者:行者123 更新时间:2023-11-30 14:24:08 25 4
gpt4 key购买 nike

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

最佳答案

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
}
}

注意:这将在直接 child 之前初始化直接 parent ——但是它不会在侄女/侄子之前初始化阿姨/叔叔。

关于c# - Unity - GetComponentsInChildren<T>() 返回顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42375242/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com