zoukankan      html  css  js  c++  java
  • 小白_Unity引擎_访问组件--GameObject.Find()和transform.Find();

    创建物体,脚本挂载到Cube2上

       #region 通过 GameObject.Find(""):查找游戏对象
         
            
            //1.通过名称查找游戏对象
            obj = GameObject.Find("Cube1");
            obj.GetComponent<MeshRenderer>().material.color = Color.red;
    
            //2.查找Cube1的子节点 Cube2, find游戏对象名称都可以找到
            obj = GameObject.Find("Cube2");
            obj.GetComponent<MeshRenderer>().material.color = Color.black;
    
            //3.可以直接查找游戏对象的路径,可以查找同名的游戏对象,可以通过路径来区分
            obj = GameObject.Find("Cube1/Cube2");
            obj.GetComponent<MeshRenderer>().material.color = Color.blue;
            
            //4.如果同一个节点下有几个相同的名称的游戏对象,会查找到层级面板Hierarchy中最后的同名游戏对象
                //通过递归的方法查找物体,返回层级面板中最后查找的物体
            obj = GameObject.Find("Cube");
            obj.GetComponent<MeshRenderer>().material.color = Color.red;
           

     总结:GameObject.Find(""):查找游戏对象
             * 1.可以查找任何层级的物体,不受脚本所绑定的物体层级位置的影响
             * 2.可以指定层级查找,也可以不用指定层级去查找
             *      若指定层级,则会在对应的层级中查找
             *      若不去指定层级,则会在所有层级中查找(名称不能重复)
             * 3.如果没有指定层级,而查找的物体是多个相同名称的物体,则会查找到Hierarchy面板中列表的最后一个的同名物体
             * 4.不支持查找隐藏的物体

     1  #region transform.Find(); 查找游戏对象
     2     
     3         //脚本挂载在Cube2上
     4         ///1.可以查找到子节点游戏物体
     5         ///2.可以查找到全路径的游戏物体
     6         //1.查找Cube1
     7         //tran = transform.Find("Cube1");//查找不到
     8         //tran = transform.Find("Cube2");//查找不到
     9         //tran = transform.Find("Cube3");//查找到了
    10        // tran = transform.Find("/Cube1/Cube2"); //查找了
    11         tran = transform.Find("/Cube");//查找到
    12         tran.gameObject.GetComponent<MeshRenderer>().material.color = Color.red;
    13 
    14         #endregion

            
      transform.Find(); 查找游戏对象
             * 1.只能查找到子集的物体
             * 2.如果想查找其他层级(同级或者父级)的物体,则需要使用完整路径进行查找
             * 3.支持查找隐藏的物体
         

    Transform获取子节点

     1         #region 通过父物体查找子物体
     2         //注意: 只能获取到自己子节点,不可以获取到子节点的子节点
     3         Transform tran = GameObject.Find("Cube1").transform.FindChild("Cube2").FindChild("Cube3");
     4 
     5         //获取父节点
     6         Transform parentTran =   GameObject.Find("Cube3").transform.parent.parent;
     7 
     8         //parentTran.childCount;有几个子节点
     9         for (int i = 0; i < parentTran.childCount; i++)
    10         {
    11             parentTran.GetChild(i).name = i+"";
    12         }
    13         
    14         
    15         #endregion
    通过父节点获取子节点

    通过Tag获取游戏对象

     1         #region 通过标签查找子节点
     2 
     3         //1.获取CubeTag 标记的游戏对象(单个)
     4         GameObject obj = GameObject.FindWithTag("CubeTag");
     5 
     6         obj = GameObject.FindGameObjectWithTag("CubeTag");
     7         //获取CubeTag 标记的所有游戏对象,并存放放到一个数组中返回
     8         GameObject[] objs = GameObject.FindGameObjectsWithTag("CubeTag");
     9 
    10 
    11         #endregion
    通过tag获取节点

    通过Type获取节点

     1         #region 通过Type类型查找物体
     2         //Object.FindObjectOfType
     3         //Object.FindObjectsOfType
     4         //返回Type类型的所有激活的加载的物体列表
     5         //它将返回任何资源(网格,纹理, 预设,,,,)或激活的物体
     6         //注意这个函数是非常慢的。不推荐在每帧使用这个函数,大多数情况下可以使用单例模式代替
     7 
     8 
     9         //获取所有有碰撞器的物体
    10         Collider[] cols = GameObject.FindObjectsOfType(typeof(Collider)) as Collider[];
    11         foreach (Collider item in cols)
    12         {
    13             item.isTrigger = true; //所有的触发器打开
    14         }
    15 
    16 
    17         #endregion
    通过Type获取节点
  • 相关阅读:
    龙芯地址空间详解
    JS匿名函数 Amy
    JS正则表达式 Amy
    JS对象 Amy
    Java 位图法排序
    Java Final
    JAVA 数组
    Java shuffle 算法
    jQuery object and DOM element
    Javascript 声明时用“var”跟不用"var"的区别
  • 原文地址:https://www.cnblogs.com/CeasarH/p/9262460.html
Copyright © 2011-2022 走看看