Unity - GetComponentsInChildren() 返回顺序

2024-03-21

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


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(使用前将#替换为@)

Unity - GetComponentsInChildren() 返回顺序 的相关文章

随机推荐

  • 如何将音频文件录制为 .m4a 格式?

    如何将音频文件录制为 m4a 格式 我正在使用下面的代码 public void startRecording throws IOException recorder new MediaRecorder path sdcard pithys
  • PyCharm:Scapy 未解决的参考

    我正在开发一个使用 scapy 用 python 编写的网络工具 我使用 Pycharm 作为 IDE 我的代码有效 因此 如果我运行它 一切都会按预期进行 我的问题是 PyCharm 给了我一些错误 它标志着每次使用IP TCP Ethe
  • 将 scanf 与 x86-64 GAS 组件结合使用

    我在尝试调用系统函数 scanf 以在我的 x86 汇编程序中工作时遇到了很多问题 目前我已经让它从标准中读取 但是它只会读取没有段错误的字符 我不知道为什么 指定字符串是 d 我在网上看到的 x86 中的 scanf 示例使用 quark
  • Git 忽略文件,而不删除它

    我有一个使用 GIT 进行版本控制的网站 我设置了一个系统 基本上可以自动部署我的更改master分支到我的生产服务器 也就是说 我的存储库中有一个 Web 挂钩 它会触发一个 PHP 脚本 该脚本本质上会启动一个git pull在服务器上
  • WatiN 搜索 google 后找不到文字

    我正在尝试运行一个简单的等待示例 搜索谷歌然后验证搜索结果 在 IE9 上 var browser new IE http www google com ncr browser TextField Find ByName q TypeTex
  • 从用于计算三角形和外接圆的 Swingworker 中重新绘制小程序

    我正在尝试复制找到的小程序here http www diku dk hjemmesider studerende duff Fortune 作为练习的一部分 该小程序使用 财富 的算法来生成两者 Voronoi 图和 Delaunay 三
  • 大背景图像和屏幕尺寸

    我正在创建一个网站 该网站将使用无法平铺的图像 我需要这张图像覆盖整个背景屏幕 但是 我希望它能够在大型显示器和小型显示器上运行 我应该制作一张大背景图像并使用它缩小它吗background size或者我应该创建不同尺寸的同一图像的多个版
  • 当定义需要 import 语句时,如何扩展现有接口?

    我创建了一个自定义 Knockout 扩展器 但在扩展 Knockout 定义文件提供的现有接口时遇到了问题 扩展器 Numeric ts import as ko from knockout function Extender targe
  • 关于如何以编程方式从 json 文件开始创建自定义 org.apache.spark.sql.types.StructType 架构对象

    我必须使用 json 文件中的信息创建一个自定义 org apache spark sql types StructType 架构对象 json 文件可以是任何内容 所以我在属性文件中对其进行了参数化 属性文件如下所示 ruta al es
  • 来自 Bitbucket 的“Go Get”私人仓库

    所以基本上 我有一个 Openshift 项目 在 Git 推送上 使用 Go get 下载所有库并即时构建项目 因此 我有一些代码不希望人们从我自己的库中看到 为了正确编译 代码需要从 github com 或另一个存储库获取 所以我创建
  • Ant 不可变属性到可变属性

    我有个问题 我正在使用 maven 的 antrun 插件 然后执行下一步 我有文件夹和子文件夹 我不知道什么叫子文件夹及其编号 我用它们的名称对此子文件夹进行存档 子文件夹名称 1 存档名称 1 acp
  • 我应该声明并检查 PHP 中是否存在变量吗?

    我注意到 XAMPP 上启用了严格的错误报告 并且现在出现未定义的索引错误 我只有两个小问题 我还在学习 我知道你不知道have在 PHP 中声明变量 但是声明它们有什么好处吗 如果不是 为什么在我未定义错误的情况下启用严格错误报告时会出现
  • 从字符串生成正则表达式

    我希望从包含数字的字符串生成正则表达式 然后使用它作为模式来搜索相似的字符串 例子 String s Page 3 of 23 如果我将所有数字替换为 d StringBuilder sb new StringBuilder for int
  • 在 JavaScript 中移动鼠标指针

    是否可以使用 JavaScript 移动鼠标 使其位于文本输入内 我不知道如何移动实际渲染的鼠标指针 但是您可以将焦点设置在元素上吗 document getElementById the text input id focus
  • ColdFusion 站点应使用哪种计算机辅助翻译格式?

    我正在创建一个多语言网站 需要支持至少五种不同的语言 包括韩语和中文 站点语言是 ColdFusion 因此 Java 是本地语言 我想让网站尽可能容易地供下一个程序员更新 并让第三方翻译人员使用比挖掘 SQL 数据库更容易的工具 到目前为
  • Node.js 找不到模块 - 干扰 Windows 上的 cygwin

    我正在测试 Bootstrap 框架 来自 Twitter 并尝试在安装 Node js 后在本地构建它 它失败了 因为它找不到 less 模块 我也使用 npm install g less 安装了该模块 C Users geir cod
  • makefile 并行运行目标

    我有以下 makefile 有两条规则 有没有办法并行运行这两个规则 我的意思是最大化 核心能力 我看到这个section https www gnu org software make manual make html Parallel但
  • sql server UTF8问题

    我有一些 utf8 数据 我想批量插入 sql server 2005 我使用的是 CODEPAGE 65001 BULK INSERT bla FROM D bla txt WITH CODEPAGE 65001 FIELDTERMINA
  • ASIHTTPRequest UIWebView加载文档

    使用 AsiHttpRequest 和 UIWebView 查看文档 pdf doc xls 的最佳方式是什么 我尝试了以下操作 但 UIWebView 正在显示 html NSString baseURL http xxxxxx open
  • Unity - GetComponentsInChildren() 返回顺序

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