Unity用脚本获取物体和组件(下)

一、应用父子关系

1、通过父子关系获取物体

仔细观察Hierarchy窗口会发现,其实拥有大量“父子关系”的物体已经构成了树形结构。在Unity中,“父子关系”的表达是Transform组件的职责。下表列出了在父子节点之间查找物体的相关方法和属性

                                           Transform组件中与查找物体相关的方法

方法名用途      参数和返回值
transform.Find在“父子关系树”中沿给定的路径查找物体的Transform组件

参数:以字符串表示一个路径。与文件路径类似,可以通过给定的路径信息,灵活找到任意其他物体。

返回值:找到物体的Transform组件。如果没找到,返回null。

transform.GetChild根据子物体的序号查找子物体

参数:一个整数,从0开始,表示要查找的子物体的序号。子物体的序号就是它在同一级的所有子物体中排第几个,也是Hierarchy窗口中子物体的顺序。

返回值:返回该子物体,如果下标超出范围则返回null

transform.GetSiblingIndex获得该物体在兄弟节点之间的序号

参数:无

返回值:序号。获得本物体在兄弟物体之间的序号

transform.IsChildeOf判断是否是另一个物体的子物体

参数:某个其他物体的Transform组件,不能为null

返回值:如果参数指定的物体是本物体的父物体,则返回true,否则返回false

 

                                         Transform组件中与查找物体相关的属性

属性名称含义与详细说明
transform.parent

获取该物体的父物体。

如果对它赋值,可以直接改变本物体的父物体,例如赋值为null代表将本物体放在最高层。

transform.root

沿着本物体的父物体一直向上查找,获取最上一级的父物体

transform.childCount

获取该物体的子物体总数,不包含子物体的子物体。

与transform.GetChild()方法结合使用可以用来遍历所有子物体。

2、通过父子路径获取物体

通过路径,可以一次移动很多步。

查找物体的路径与操作系统的文件路径类似。当需要指明下一级节点时,就写出该节点的名称。如果还要继续指明下一级,就加上斜杠“/”分隔。如果要引用上一级节点,使用两个英文句号“..”即可。这样一来,理论上从一个物体出发就可以获取到场景中任意一个节点

3、一些有用的方法

   

方法用途参数和返回值
GetComponentInChildren从所有子物体中查找某种组件

参数:需要用泛型指定查找的类型

返回值:找到的第一个组件

GetComponentsInChildren从所有子物体中查找所有某种组件

参数:需要用泛型指定查找的类型

返回值:包含所有该类型组件的数组

GetComponentInParent从父物体中查找某种组件

参数:需要用泛型指定查找的类型

返回值:找到的第一个组件

GetComponentsInParent从父物体中查找所有某种组件

参数:需要用泛型指定查找的类型

返回值:包含所有该类型组件的数组

二、利用公开变量引用物体和组件

举例如下

using UnityEngine;

public calss TestGetTransform : MonoBehaviour
{
   public GameObject other;
   public Transform otherTrans;
   public MeshFilter otherMesh;
   public Rigidbody otherRigid;
   void Start()
   {
   //可以任意使用前面的变量
   }
}

 在Inspector界面,将相应的对象或者组件拖曳到对应框框内,就可以了。这种方式非常直观,而且可以用组件类型作为限制,防止拖入错误类型的物体。

总结:

获取物体和组件的方式有以下几种:

  • 通过名称或标签,找到任意未禁用的物体
  • 通过父子关系,从一个物体出发,可以沿路找到任意物体
  • 只要获得了某个游戏物体或该物体上的任意组件,就可以得到所有其他组件,也可以通过任意组件获得物体本身
  • 可以遍历某个物体下一级的所有子物体
  • 可以用公开变量的方式,在编译器里拖曳选择物体
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

七七喝椰奶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值