小白_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.支持查找隐藏的物体
     

猜你喜欢

转载自www.cnblogs.com/CeasarH/p/9262460.html