Unity中的各种寻找GameObject方法归纳

1.GameObject.Find():寻找Hierarchy面板中的activie 不为false的游戏对象;

路径如官方事例写法:

public class ExampleClass : MonoBehaviour {

    public GameObject hand;
    void Example() {
        hand = GameObject.Find("Hand");
        hand = GameObject.Find("/Hand");
        hand = GameObject.Find("/Monster/Arm/Hand");
        hand = GameObject.Find("Monster/Arm/Hand");
    }
}

2.Transform.Find()

官方解释是通过名字获取到一个子物体(Finds a child by name and returns it),该方法可以获取到隐藏(inactive)的GameObject,

可以通过先获得父对象(active必须为true),再通过寻找孩子Transform.Find()


       GameObject rootObj = GameObject.Find("GameObject");       
         GameObject transformObj=  rootObj.transform.Find("xxxx").gameObject;
          transformObj.SetActive(true)

3.transform.GetChild(index);index为索引,0,1,2,3,4代表第几个child.

补充:关于场景中的消失

gameObject.renderer.enabled   
//是控制一个物体是否在屏幕上渲染或显示  而物体实际还是存在的 只是想当于隐身 而物体本身的碰撞体还依然存在的  
  
GameObject.Destroy()    
//表示移除物体或物体上的组件 代表销毁该物体  实际上该物体的内存并没有立即释放 而是在你下下个场景中槽释放内存资源,就是你a场景中Destroy了 一般是在c场景中才真正释放该物体的内存资源(这是我的体会 不知道理解错误没)  
  
gameObject.active     
//是否在场景中停用该物体   在你gameObject.active =false中 则你在场景中用find找不到该物体    
//如果该物体有子物体 你要用SetActiveRecursively(false) 来控制是否在场景中停用该物体(递归的)  

 

4.//递归查找所有子物体
  private void Recursive(GameObject parentGameObject){
        //TODO parentGameObject
        foreach (Transform child in parentGameObject.transform){
            Recursive(child.gameObject);
        }
    }                                                        

 

转载于:https://www.cnblogs.com/cxihu/p/10273866.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值