物体组件
1.组件的基本操作
代码类名后面跟的MonoBehaviour使脚本能够挂到物体的组件中。
组件在Inspector视图中,可以通过最下面的Add Component添加组件,通过组件点击组件名左边的勾选符号打开或关闭组件,通过组件名右边的三个点下面的Remove Component移除组件。
2.通过脚本操作组件
2.1添加组件
使用的API:AddComponent</*组件名称*/>();
示例:
using UnityEngine;
public class Test : MonoBehaviour
{
void Start()
{
GameObject go = GameObject.Find("Cube/Sphere");
go.AddComponent<Rigidbody>();
}
}
该段代码先找出物体Sphere,运行时在该物体上添加Rigidbody组件。
2.2查找组件
2.2.1.查找单个组件
使用的API:GetComponent</*组件名称*/>()
示例:
using UnityEngine;
public class Test : MonoBehaviour
{
void Start()
{
GameObject go = GameObject.Find("Cube/Sphere");
go.GetComponent<SphereCollider>().radius = 1;
}
}
该段代码的功能是,先查找Sphere物体,然后查找Sphere物体的SphereCollider组件,并将该组件中radios值改为1。
如果想查找该物体及其子物体的某个组件,可以将示例代码中的go.GetComponent<SphereCollider>().radius = 1;改为go.GetComponentInChildren<SphereCollider>().radius = 1;,改完之后会查找该物体及其子物体的该组件类型,找到一个后便停止,不再继续查找。
如果想查找该物体及其父物体的某个组件,可以将示例代码中的go.GetComponent<SphereCollider>().radius = 1;改为go.GetComponentInParent<SphereCollider>().radius = 1;改完之后会查找该物体及其父物体的该组件类型,找到一个后便停止,不再继续查找。
2.2.2.查找多个同类型的组件
使用的API:GetComponents<AudioSource>();
示例:
using UnityEngine;
public class Test : MonoBehaviour
{
void Start()
{
GameObject go = GameObject.Find("Cube/Sphere");
SphereCollider[] sphereColliders= go.GetComponents<SphereCollider>();
Debug.Log("查找到多少个:"+sphereColliders.Length);
}
}
这段代码的功能是,先找到Sphere物体,找出物体里所有SphereCollider组件,将找到的组件放入数组SphereCollider中,并通过控制台打印数组的长度。
如果想查找该物体及其子物体的某个组件,可以将示例代码中的SphereCollider[] sphereColliders= go.GetComponents<SphereCollider>();改为SphereCollider[] sphereColliders= go.GetComponentsInChildren<SphereCollider>();改完之后会查找该物体及其子物体的所有该组件类型。
如果想查找该物体及其父物体的某个组件,可以将示例代码中的SphereCollider[] sphereColliders= go.GetComponents<SphereCollider>();改为SphereCollider[] sphereColliders = go.GetComponentsInParent<SphereCollider>();改完之后会查找该物体及其父物体的所有该组件类型。
3.删除组件
使用的API:Destroy(/*要删除的组件类型*/);
示例:
using UnityEngine;
public class Test : MonoBehaviour
{
void Start()
{
GameObject go = GameObject.Find("Cube/Sphere");
SphereCollider sphereCollider = go.GetComponent<SphereCollider>();
Destroy(sphereCollider);
}
}
该段代码的功能是,找到物体Sphere,并在运行时删除该物体的SphereCollider组件。SphereCollider sphereCollider = go.GetComponent<SphereCollider>();改为Component sphereCollider = go.GetComponent<SphereCollider>();也可实现该效果。
4.关闭和激活组件
使用的API:enabled=false;
示例:
using UnityEngine;
public class Test : MonoBehaviour
{
void Start()
{
GameObject go = GameObject.Find("Cube/Sphere");
go.GetComponent<SphereCollider>().enabled=false;
}
}
该代码的功能是,找到物体Sphere,并在运行时关闭该物体的SphereCollider组件。
如果想要激活组件,可以将上面示例中的go.GetComponent<SphereCollider>().enabled=false;改为go.GetComponent<SphereCollider>().enabled=true;
标签:SphereCollider,Sphere,物体,go,查找,组件 From: https://www.cnblogs.com/gatran/p/17441458.html