|
|
1
GetComponentsInChildren <Transform>()
—— 获取物体下的所有物体
此函数会返回一个 Transform 数组
遍历数组中元素即可拿到所有子物体、孙物体(所有物体)
1. 用于测试,在层次列表中创建如下结构 2. 将脚本挂载到一级物体上using UnityEngine;////// 查找物体/// public class ChinarFindObject : MonoBehaviour{ private void Start() { //遍历所有物体:GetComponentsInChildren()返回一个 Transform[] 数组 foreach (var t in GetComponentsInChildren ()) { print(t.name); } }}
3. 运行后结果:如果所示,会找到所有的物体,且包括自身
2
GameObject Active False —— 游戏对象关闭时
注意:当游戏对象被关闭时,也就是在 Inspector 面板中被关掉时
就会找不到北关掉的物体,以及其下方的所有物体
例如,当我们关掉“二级”物体时
再次运行后结果: 可以看到,被关闭的物体,就不会被找到了3
Solve —— 解决办法
注意:其实这种情况,其实很常见
我们要获取到,目标物体下方的所有物体,包括被关闭掉的物体时要怎么办呢?
其实解决办法很简单,只需要加一个 True
到括号中即可
GetComponentsInChildren<Transform>(true)
即可
using UnityEngine;////// 查找物体/// public class ChinarFindObject : MonoBehaviour{ private void Start() { //遍历所有物体:GetComponentsInChildren(true)返回一个 Transform[] 数组 //括号中,加上true。会将被关闭掉的物体也返回到数组中 foreach (var t in GetComponentsInChildren (true)) { print(t.name); } }}
再次运行后结果:
可以看到,被关闭的物体,也会被找到,并返回到数组中我们只需对需要的信息,进行操作即可
支持
May Be —— 搞开发,总有一天要做的事!
|
本博客为非营利性个人原创,除部分有明确署名的作品外,所刊登的所有作品的著作权均为本人所拥有,本人保留所有法定权利。违者必究 对于需要复制、转载、链接和传播博客文章或内容的,请及时和本博主进行联系,留言,Email: ichinar@icloud.com 对于经本博主明确授权和许可使用文章及内容的,使用时请注明文章或内容出处并注明网址