使用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、gameObject与transform相互转换
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;//多层父级