unity深度查找某个子物体和遍历所有子物体方法_unity 获取同级物体-程序员宅基地

技术标签: Unity常用函数方法  unity3d  

本文总结一下关于unity的查找子物体的方法

首先说明一下这里将讲三种查找子物体方法:

查找固定路径的某一个子物体的方法、通过名字深度查找某个子物体的方法、查找父物体下所有子物体的方法。

第一:查找固定路径的某一个子物体的方法

对于已知的路径可以直接用go.transform.FindChild方法来查找。

例如:在这样一个层级路径下,我们要找到最后那个plane物体。

复制代码
 1 using UnityEngine;
 2 using System.Collections;
 3  
 4 public class findchild : MonoBehaviour {
    
 5  
 6     // Use this for initialization
 7     void Start () {
    
 8     
 9     }
10     
11     // Update is called once per frame
12     void Update () {
    
13         if (Input.GetMouseButtonDown(1))
14         {
    
15             //查找物体方法
16             GameObject go = GameObject.Find("Cube");
17             //查找子物体,并且将得到的物体转换成gameobject
18           GameObject objname= go.transform.FindChild("Sphere/Cylinder/Plane").gameObject;
19  
20           Debug.Log("得到最终子物体的名字是:"+ objname.name);
21         }
22     }
23 }
复制代码

然后是执行结果:Plane
在这里插入图片描述

==-------------------------------------------------------------------------------------------------------------

第二:通过名字深度查找某个子物体的方法

注意:要使用这个方法必须要满足两个条件:第一必须有你要查找的子物体的名字,第二必须要从一个父物体上开始查起

下面代码中,check代表从这个父物体开始查起,name为你要查找的目标子物体的名称。如return GetTransform(transform,“bone12”);

该方法核心代码:

复制代码
 1 using UnityEngine;
 2 using System.Collections;
 3  
 4 public class findchild : MonoBehaviour {
    
 5  
 6     // Use this for initialization
 7     void Start () {
    
 8     
 9     }
10     
11     // Update is called once per frame
12     void Update () {
    
13         if (Input.GetMouseButtonDown(1))
14         {
    
15             //  //查找物体方法
16            GameObject go = GameObject.Find("Cube");
17             //  //查找子物体,并且将得到的物体转换成gameobject
18             //GameObject objname= go.transform.FindChild("Sphere/Cylinder/Plane").gameObject;
19  
20             //Debug.Log("得到最终子物体的名字是:"+ objname.name);
21              
22  
23             GetTransform(go.transform, "Cylinder");
24             
25         }
26     }
27  
28     Transform GetTransform(Transform check, string name)
29     {
    
30         Transform forreturn = null;
31  
32         foreach (Transform t in check.GetComponentsInChildren<Transform>())
33         {
    
34             if (t.name == name)
35             {
    
36                 Debug.Log("得到最终子物体的名字是:" + t.name);
37                 forreturn = t;
38                 return t;
39                 
40             }        
41            
42         }
43         return forreturn;
44     }
45 }
复制代码

测试结果:Cylinder
在这里插入图片描述


第三:接下来我们将获取一个父物体下的所有子物体,然后销毁其下所有子物体

注意:所有子物体都是同级关系,在同一层里。如图:
在这里插入图片描述

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class findchild : MonoBehaviour {
    

    // Use this for initialization
    void Start () {
    

    }

    // Update is called once per frame
    void Update () {
    
        if (Input.GetMouseButtonDown(1))
        {
    
            //  //查找物体方法
           GameObject go = GameObject.Find("Cube");
            List<Transform> lst = new List<Transform>();
            foreach (Transform child in go.transform)
            {
    
                lst.Add(child);
                Debug.Log(child.gameObject.name);
            }
            for (int i = 0; i < lst.Count; i++)
            {
    
                Debug.Log("销毁的物体是:"+ lst[i].gameObject);
                Destroy(lst[i].gameObject);
            }

        }
    }


}

测试结果,全被销毁了:

在这里插入图片描述

以上就是我总结的常用的三种查找子物体的方法。

转自https://www.cnblogs.com/macky/p/9335093.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_45570756/article/details/114797897

智能推荐

「Photoshop2021入门教程」新功能——快速操作_ps2021没有快速操作-程序员宅基地

文章浏览阅读1.1k次。PS新手教程哪里有?小编为大家带来Photoshop2021新手系列教程,今天我们来学习PS新功能——快速操作面板。打开图片菜单栏点击帮助-Photoshop帮助...弹出发现窗口,选择快速操作在快速操作中可以对图片进行快速操作,如移除背景模糊背景制作黑白背景等等,一键操作非常方便。你学会PS2021新功能快速操作了么?..._ps2021没有快速操作

如何根据程序崩溃时的DMP文件使用WinDbg查找调用堆栈_dump 直接打开看堆栈用什么工具windbg-程序员宅基地

文章浏览阅读9.6k次。如何根据程序崩溃时的DMP文件使用WinDbg查找调用堆栈 HOW TO: 查找问题的异常堆栈时出现的 UnhandledExceptionFilter 调用堆栈跟踪中http://support.microsoft.com/kb/313109/zh-cn察看本文应用于的产品 本页概要 使用 Windbg.exe 打_dump 直接打开看堆栈用什么工具windbg

学习小组结伴_第一行是一个整数n,表明n个同学。(2<=n<=50,n为偶数) 。 第二行n个整数表明n个同-程序员宅基地

文章浏览阅读1.2k次。题目内容:为了促进互帮互相,决定成立学习小组。小组结伴的规则是这样的:先将学号按升序排列,排在最前的一个人和排在最后的那个人结成同伴,排在第2个的与排在倒数第2个的结成同伴…依次类推,2个一组成同伴。输入格式:第一行是一个整数n,表明n个同学。(2<=n<=50,n为偶数) 。 第二行n个整数表明n个同学的学号,学号之间有一个空格,学号是无序输入的。如果输入的学生数是奇数,则输出提示信息:“odd number”输出格式:共n/2行,每行二个整数,表明结伴同学的学号,两个学_第一行是一个整数n,表明n个同学。(2<=n<=50,n为偶数) 。 第二行n个整数表明n个同

条件注解@Conditional_java 不存在才创建 @conditional-程序员宅基地

文章浏览阅读110次。如果没有havingValue,那么会采用prefix+name 或 prefix+value 的值,去和false比较,如果值等于false 那么失败, 如果不等于false 成功。定义:在spring框架中用于根据特定条件决定是否创建或者注册某个bean或配置的注解,他们可以根据运行时环境,配置属性,或其他条件来动态的控制bean的创建或者注册。在上述代码中,表示会去application文件中,读取前缀为:Spring.datasource下,名字为type的key的值,读取到之后,会跟。_java 不存在才创建 @conditional

PDF 参照流/交叉引用流对象(cross-reference stream)的解析方法_php无法解析压缩的交叉引用和对象流的pdf-程序员宅基地

文章浏览阅读3.8k次。采用交叉引用流对象有以下几点好处:1) 压缩后存储的信息更紧凑;2) 可以访问存储在对象流中的压缩对象,并允许以后加入新的参照选项类型。_php无法解析压缩的交叉引用和对象流的pdf

面试只会问八股?你应该好好思考怎样做一场面试_如果面试一直问八股-程序员宅基地

文章浏览阅读517次。八股文并不能很好地测试候选人水平,我们应该思考更有效的面试方法。_如果面试一直问八股

随便推点

技术译文 | How Can ScaleFlux Handle MySQL Workload?-程序员宅基地

文章浏览阅读217次。本文是一篇译文,介绍 Percona 的工程师对 ScaleFlux 的性能压测报告翻译:杨奇龙原文地址:https://www.percona.com/blog/2020/08/06/how-can-scaleflux-handle-mysql-workload/最近作者有一个针对 ScaleFlux 的产品也叫做 CSD 2000 进行压测的机会. 本文中作者将介绍使用 Intel SSD 和 ScaleFlux 存储设备进行压测的对比结果。一 我们为什么需要不一样的 ScaleFlux?._scaleflux

electron vue vite 配置安装_wincodesign-2.5.0-程序员宅基地

文章浏览阅读460次。electon 打包安装_wincodesign-2.5.0

华为nova7可以用鸿蒙,华为鸿蒙系统再次更新7款可适配机型!对比安卓,鸿蒙OS的优势有哪些?...-程序员宅基地

文章浏览阅读6.2k次。原标题:华为鸿蒙系统再次更新7款可适配机型!对比安卓,鸿蒙OS的优势有哪些?自从鸿蒙OS系统全面启动公测以来,不断的在更新更多适配机型,就在前不久华为鸿蒙官网又新增了不少的机型,除了之前的Mate系列和P系列外,这次更新的机型有:华为nova6、nova65G、nova75G、nova7Pro5G、nova8、nova8Pro、MatePad10.8英寸。这些机型都可以体验鸿蒙OS 2.0公测版。..._nova7最好用的系统版本

Python-opencv之目标定位_python cv用于定位-程序员宅基地

文章浏览阅读1.5w次,点赞14次,收藏87次。最近团队准备参加一个无人机比赛,大致的规则是这样的:固定翼飞机从跑道起飞,然后在空中转体360°,通过GPS粗定位飞行至一个高13米左右,宽6米左右八字形框前(距离约50米左右),这时依靠计算机视觉的方法,让飞机准确的穿过去。(之后还有其他的动作,但是第一步大体就是这样)。 初步的方案:①通过机载摄像机获取图像序列 ②选取关键帧进行处_python cv用于定位

高速缓冲存储器cache介绍_c6713的第一级程序高速缓冲和第一级数据高速缓冲容量都是8kb,第一级存储器/高速缓冲的容量为32-程序员宅基地

文章浏览阅读8.4k次。cache介绍一、 Cache- 主存存储结构及其实现 为了解决存储器系统的容量、存取速度及单位成本之间的矛盾,可以采用 Cache- 主存存储结构,即在主存和 CPU 之间设置高速缓冲存储器 Cache ,把正在执行的指令代码单元附近的一部分指令代码或数据从主存装入 Cache 中,供 CPU 在一段时间内使用,由于存储器访问的局部性,在一定容量 Cache 的条件下,我_c6713的第一级程序高速缓冲和第一级数据高速缓冲容量都是8kb,第一级存储器/高速缓冲的容量为32kb。

C语言资料文章目录合集-程序员宅基地

文章浏览阅读512次,点赞12次,收藏8次。C语言资料文章目录合集