关于Unity5.3.4版本GetComponentsInChildren函数的一个小坑

来源:互联网 发布:云计算产业价值链 编辑:程序博客网 时间:2024/06/12 20:33

之前在网上看过关于获取所有子物体的方法,是通过GetComponentsInChildren<Transform>()函数得到所有子物体的Transform,从而可以得到GameObject,但是今天我偶然发现这个函数有一个问题,不知道是不是版本的问题。

我搭建了如图的场景



然后把如下脚本挂载在父物体上:


运行后,输出日志如下



然后我把父物体的BoxCollider移除掉,吧脚本改成这样:



运行时,输出日志如下:



最后我把代码再次更改,并得到了如下的运行结果


于是我得出结论,

GetComponentsInChildren函数可以寻找到所有子物体上面的组件,但是在此之前也会尝试寻找当前物体上的组件,如果找到了,当前物体的组件会一并存放在数组里面返回,如果没找到,返回的是子物体上面的组件


后来,我对场景与代码做了如下调整,得到了惊人的结果:




后来我去查看了API文档,原文如下,在此不做翻译:




注意:

版本问题未测试过,此时我使用的版本是5.3.4f1



【2016年11月14日更新:】GetComponentsInChildren有两个版本,一个是Component类继承下来的版本,另一个是GameObject类的版本

一下是API文档原文,此处不做翻译

GameObject类版本



Component类版本


0 0
原创粉丝点击