Unity查找游戏物体的方法(含查找隐藏物体)

使用GameObject.Find()可以找到场景所有游戏对象(不包括隐藏物体(没打勾的))

使用transform.Find()可以找到游戏对象隐藏的gameObject(前提他的transform组件没打勾(一般也不会取消))

一、gameObject与transform

1、gameObject

gameObject表示物体本身,可以获取到物体的属性信息。例如:

gameObject.name  //名称
gameObject.activeSelf //是否激活
gameObject.layer  //所在层级
gameObject.tag    //标签

同时,也可以执行常用的方法:

gameObject.SetActive  //设定是否激活
gameObject.GetComponents  //获取组件
gameObject.GetComponentInChildren //获取子级组件
gameObject.GetComponentInParen   //获取父级组件

除此之外,需要区分gameObject和GameObject:

  • 大写的GameObject是个类,里面写满了物体有关的代码
  • 小写的gameObject指的是物体本身

2、transform

transform表示物体的关系,可以获取到的物体关系的属性信息。例如

transform.position //位置
transform.rotation //角度
transform.parent //父级
transform.childCount //子级数量

同时,也可以执行常用的方法:

transform.GetComponents  //获取组件
transform.GetComponentInChildren //获取子级组件
transform.GetComponentInParen   //获取父级组件
transform.Rotate //旋转
transform.SetParent //设置父级
transform.SetSiblingIndex //设置索引顺序

除此之外,需要区分gameObject和GameObject:

  • 大写的Transform是个类,里面写满了和社会关系有关的代码
  • 小写的transform是物体本身的社会关系

3、gameObjecttransform相互转换

transform.gameObject
gameObject.transform

二、常用查找物体方法示例

1、大写的GameObject查找

//根据名称查找(只能找到激活的物体)
GameObject go = GameObject.Find("XXX");

//根据标签查找(只能找到激活的物体)
GameObject go = GameObject.FindGameObjectWithTag("XXX");
GameObject[] go = GameObject.FindGameObjectsWithTag("XXX");

//根据组件查找(只能找到激活的物体)
Image image  = GameObject.FindObjectOfType<Image>();
Image[] image  = GameObject.FindObjectsOfType<Image>();

2、用小写的transform查找

//根据名称查找(也能找到隐藏物体)
Transform t = transform.Find("XXX");

//直接查找子级(也能找到隐藏物体)
Transform t = transform.GetChild(0);//子级
Transform t = transform.GetChild(0).GetChild(0).GetChild(0).GetChild(0);//多层子级

//直接查找父级(也能找到隐藏物体)
Transform t = transform.parent;//父级

Transform t = transform.parent.parent.parent.parent;//多层父级
—— 完 ——
相关推荐
评论

立 为 非 似

中 谁 昨 此

宵 风 夜 星

。 露 , 辰

文章点击榜

细 无 轻 自

如 边 似 在

愁 丝 梦 飞

。 雨 , 花