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

智能推荐

树莓派python播放音频文件_树莓派开启声音及视频播放-程序员宅基地

文章浏览阅读2.7k次。什么?刚刚买回来点亮的树莓派是个哑巴?放音乐没声音,不是缺少输出设备,那就是默认设置不对啦。如何设置,并且可以让树莓派播放 1080p 的视频,看这里呀~连接输出设备首先,检查你树莓派的输出设备是否正确连接,不管是使用带有音响的显示器 HDMI 接口,还是 3.5mm 耳机或扬声器设备,确保他们正确连接并且供电正常。设定输出设备打开树莓派设置:sudo raspi-config进入 Advance..._树莓派播放不了音乐

阿里云上安装编译vnpy1.7版本_vnpy 编译-程序员宅基地

文章浏览阅读2.3k次。经过几个月的爬坑,终于解决了在阿里云上架设vnpy的问题。开心啊。官方教程并未详细写清楚(官方UBUNTU环境配置链接)应该怎么样在阿里云上面编译安装vnpy。总是卡在编译完成安装编译环节,而且内存会突然奇高直接挂掉服务器。原因居然是因为,talib的c语言库没有安装。以下是我跳坑经历,仅供参考。什么anaconda,pip,mongdb,qtpy什么的鬼,就看官方文档吧。我这里仅仅说明我安装_vnpy 编译

JS题库_要实现文本框显示字体颜色设置成红色,下面()是正确的。<inputid='tb'type='text-程序员宅基地

文章浏览阅读1.4w次,点赞15次,收藏95次。 选择题1、 JavaScript脚本语言的前身是 ( )A.Basic B.Live Script C.Oak D.VBScript答案:B 难度 容易2、 以下哪个不是javascript语言的特点:( ) A. 基于对象 B. 跨平台 C. 编译执行 D. 脚本语言答案:C难度 容易3标记符title是放在..._要实现文本框显示字体颜色设置成红色,下面()是正确的。

云计算面试题及答案,云计算岗位精品面试题_云计算你专业课哪门最差怎么回答-程序员宅基地

文章浏览阅读4.6k次,点赞2次,收藏25次。云计算现在发展前景很好,很多人都会选择云计算。但是学完云计算如何面试成功也是重要的一环。这次在本文就为大家带来云计算面试及答案,希望能够对大家找工作的征程有所助益。针对云计算工程师,现在业内也有不少开放认证的公司,比如AWS、Azure、MCSE-基础架构和云平台、CCNA和CCNP云计算版本、VMware VCP7-CMA,这些认证在应聘时还是可以成为加分项的。大多数互联网公司会要求应聘者具备..._云计算你专业课哪门最差怎么回答

mybatis mapper 方法重载_mybatis的mapper可以重载吗-程序员宅基地

文章浏览阅读2.6k次,点赞2次,收藏5次。在mybatis框架中,写mapper接口时,是不可以进行方法的重载的;@Mapperpublic interface StationMapper extends BaseMapper<BxWellStation> { @Update("update bx_well_station_status set warn_status=0 where station_id=#{stationId}") void updateByStation(@Param("station_mybatis的mapper可以重载吗

四参数拟合算法之高斯牛顿法-程序员宅基地

文章浏览阅读2k次,点赞2次,收藏13次。文章目录介绍牛顿法Matlab Code介绍 前面提到了牛顿法,那其实相当于求根的算法。跟一般最小二乘法的区别是,它并没有显示的最小二乘目标式子。F(A,B,C,D,xi)=0F(A,B,C,D,x_i) = 0F(A,B,C,D,xi​)=0 下面提到的高斯牛顿法,则要正式引入最小二乘法的目标式子。首先对牛顿法做一次更深入的展开。牛顿法 牛顿法在用于一元方程求根的时候,只需要做一阶泰..._四参数拟合算法

随便推点

h5页面开发配置兼容-阻止双指手势缩放_iframe 挂h5 不支持手势-程序员宅基地

文章浏览阅读3.5k次,点赞5次,收藏5次。阻止双指手势放大h5页面输入框顶将页面顶起问题判定pc/移动端设备打开_iframe 挂h5 不支持手势

【前端】搭建Vue3框架_前端框架vue如何搭建-程序员宅基地

文章浏览阅读8.8k次,点赞5次,收藏15次。搭建Vue3框架_前端框架vue如何搭建

汉诺塔(Tower of Hanoi)--------递归思路_汉诺塔递归-程序员宅基地

文章浏览阅读4.7k次,点赞23次,收藏77次。汉诺塔问题的递归思路:将 n 个圆盘分为 n-1 (即除最低层的圆盘)与 1 (即最底层的圆盘),将n-1个圆盘移动到中转位置,将1移动到目的位置,再将 n-1 分为 (n-1)- 1与 1,将(n-1)- 1 移动到中转位置,将1移动到目的位置_汉诺塔递归

蓝牙AOA高精度定位_aoa 定位算法 java-程序员宅基地

文章浏览阅读8.3k次,点赞4次,收藏58次。01—蓝牙AOA定位技术原理2019 年初,蓝牙技大联盟宣布蓝牙 5.1 引入了新的“寻向”功能,这个功能可检测蓝牙信号的方向,将大幅提高蓝牙定位的精确度,提供更好的位置服务, 结束了以往..._aoa 定位算法 java

CSDN头版头条 《近匠》 Wijmo 5 CTO:从Web到移动,我的25年编程生涯-程序员宅基地

文章浏览阅读2.5k次。《近匠》第64期,Wijmo 5是由GrapeCity旗下ComponentOne公司开发的新一代HTML5/JavaScript控件库。本期近匠采访了Wijmo 5 CTO Bernardo Castilho先生,听他讲述从Web到移动的25年编程生涯,以及Wijmo 5的开发故事。

几行代码轻松实现,Tensorlayer 2.0推出深度强化学习基准库_tensorlayer 2.0+-程序员宅基地

文章浏览阅读494次。2019-11-11 16:37:04机器之心发布机器之心编辑部强化学习通过使用奖励函数对智能体的策略进行优化,深度强化学习则将深度神经网络应用于强化学习算法。深度强化学习由于其可扩展性,受到科研界和工业界越来越多的关注,其应用包括简单的基于图像的游戏,和高度复杂的游戏如星际争霸,以及棋牌类游戏如围棋、德州扑克等,在机器人控制领域也逐渐被科研人员采用。近日,为了让工业界能更好地..._tensorlayer 2.0+

推荐文章

热门文章

相关标签