Unity 常用API之Component,GameObject获取组件

根据名字查找

 


   private GameObject game;
   Transform tran;
  game=GameObject.Find("Cube");//查找场景中的所有物体

     tran=this.transform.Find("Cube (1)");//需要查找子物体时(找不到自身)

    tran=this.transform.Find("Cube (1)/Cube (2)");//子物体的子物体用/表示下一层子物体。

根据标签查找

game=GameObject.FindGameObjectWithTag("Player");//根据标签名查找

games = GameObject.FindGameObjectsWithTag("Player");

根据组件类型查找

T tr = GetComponent(typeof(T)) as T;//T为组件类型
       T tr = GameObject.FindObjectOfType();
      T tr= GameObject.FindObjectOfType(typeof(T)) as T;

例如:

Transform tran; 
 Transform tr = GetComponent(typeof(Transform)) as Transform;
        tran = GameObject.FindObjectOfType();
        tran = GameObject.FindObjectOfType(typeof(Transform)) as Transform;

GetComponentInParent和GetComponentInChildern

GetComponentInChildren

获取子物体组件(先从自身查找)自身有就返回没有继续查找下一个直到找到该组件为止。

GetComponentInChildren<T>();T为要查找的组件类型。

 

下面以获取网格渲染器为例:

private void Start()

    {

        //获取网格渲染器

MeshRenderer mesh=this.GetComponentInChildren();

//将网格渲染器中的颜色属性设置为黑

     mesh.material.color = Color.black;

}

创建多个Cube父子级关系如图

Unity 常用API之Component,GameObject获取组件_第1张图片

Game视图下的Cube

Unity 常用API之Component,GameObject获取组件_第2张图片

将脚本只放在Cube中:

Unity 常用API之Component,GameObject获取组件_第3张图片

运行程序:

Unity 常用API之Component,GameObject获取组件_第4张图片

获取组件成功。

如果不激活Cube中的 Mesh Renderer组件

Unity 常用API之Component,GameObject获取组件_第5张图片

在运行

Unity 常用API之Component,GameObject获取组件_第6张图片

Cube不会显示黑色 因为Cube的Mesh Renderer组件没有激活,但是Mesh Renderer组件中的Materials属性中的color还是会改变。

Unity 常用API之Component,GameObject获取组件_第7张图片

 

将Cube中Mesh Renderer组件Remove 掉

Unity 常用API之Component,GameObject获取组件_第8张图片

运行:

Unity 常用API之Component,GameObject获取组件_第9张图片

就是找子类中第一个物体中的该组件。如果第二个也没有就会找第三个 知道找到为止。

只能找一个物体不能找到所有的子物体。

GetComponentsInChildren

可查找都所有子物体

Unity 常用API之Component,GameObject获取组件_第10张图片

GetComponentInParent

获取物体组件(先从自身查找)自身有就返回没有继续查找下一个直到找到该组件为止。

 

你可能感兴趣的:(unity,API,获取,组件,Component,GameObject)