GetComponent 是访问游戏对象的组件并调整参数的方法,
GetComponentInChildren是获取子物体的组件。
一、GameObject.GetComponent
GetComponent是获取当前游戏对象组件的方法,可以通过直接调用它来访问游戏对象的组件和进行参数调整。
1.格式用途
GameObject.GetComponent<type>()
(1)GameObject 是定义 GameObject 游戏对象的变量名。
(2)type 是组件名称,类型是 string。
2.举例说明
1.GetComponent<Rigidbody>().mass = 20;
表示 Rigidbody 组件的 mass 赋值为20;
GetComponent<Rigidbody>().mass = 20;
2. GetComponent<BoxCollider>().isTrigger = true;
表示给 BoxCollider 组件的 Is Trigger 为 true;
GetComponent<BoxCollider>().isTrigger = true;
3.GetComponent<Test>().enabled = false;
表示禁用 Test 组件。
GetComponent<Test>().enabled = false;
二、GetComponentInChildren
通过GetComponentInChildren()方法实现对子对象上的组合的访问,但这有一个前提,如果父对象上也有相同的组件,那么最终返回的是父对象上的组件。
1.用途
GetComponentInChildren,会优先判断物体自身是否有目标组件,若有直接返回该组件,不便利子物体;若物体自身没有目标组件,遍历子物体,按照子物体顺序查找(比如:先判断第一个子物体,若没有获取到目标组件,再遍历第一个子物体的子物体(目标物体孙物体),然后再判断目标物体的第二个子物体,以此递归查找)。
延伸:GetComponentsInChildren,会获取包含物体自身、节点下所有子物体、孙物体的目标组件,也是递归:
2.格式举例说明
(1)GameObject 是定义 GameObject 游戏对象的变量名。
(2)type 是组件名称,类型是 string。
1.Component对象.GetCompontlnChildren<组件>()
得到对象的一个显示状态的子组件
代码如下(示例):
gameObject.GetComponentInChildren<type>()
2.Component对象.GetCompontslnChildren<组件>()
得到对象的所有显示状态的的子组件
gameObject.GetComponentsInChildren<type>()
3.Component对象.GetCompontlnChildren<组件>(true)
得到对象的一个子组件(显示状态/隐藏状态都可以得到)
gameObject.GetComponentInChildren<type>(true)
4.Component对象.GetCompontslnChildren<组件>(true)
得到对象的所有子组件(显示状态/隐藏状态都可以得到)
gameObject.GetComponentsInChildren<type>(true)
扩展
GameObject 代表的是所有出现在当前场景下的游戏对象
gameObject 代指挂在了当前这个脚本的游戏对象