Transform 获取的几种方式
一、先获取 GameObject 在场景中,然后再获取 transform
1、GameObject a = GameObject.Find()—>a.transform
2、GameObject b = GameObject.Find()—>b.GetComponent()
二、直接挂载在相应的对象上
当脚本直接挂载在相应的对象上时,可以直接拿到 GameObject,无需再用 Find 方法。有三种方式可以拿到。
1、小写的 gameObject,例如 gameObject.transform
2、this,例如 this.transform
3、什么都不写,例如 transform,对你没看错,直接写 transform 就可以拿到 。这个算是 Unity 给出的语法糖。
Transform a = gameObject.transform;
Transform b = this.transform;
Transform c = transform;
Transform 获取子父对象
1、获取子对象可以通过 GetChild(int index) 获取,参数为 int 型,第几个子对象。返回的是一个 Transform
2、获取父对象可以通过属性 parent 获取
下面是我写的一个例子
void Start ()
{
GetCountAndChild();
//ParentMethod();
}
private void ParentMethod()
{
Transform a = transform.parent.parent;
print("父对象:" + a.name);
}
private void GetCountAndChild()
{
int a = transform.childCount;
print("子对象的总数量::" + a);
print("父对象的 Id::" + transform.GetInstanceID());
for (int i = 0; i < a; i++)
{
print("子对象的名字" + transform.GetChild(i).name);
print("子对象的位置:" + transform.GetChild(i).position);
print("子对象的 id:" + transform.GetChild(i).GetInstanceID());
}
}
对应例子的游戏截图,脚本挂在了 Sphere 上,如果要测试父对象,需要把脚本挂在子对象上测试。