xiaozongpeng 发表于 2022-5-17 11:13

Unity “父子关系”

在 Unity 中, 有的时候用脚本生成的 GameObject,我会想 Group 它们,查了一下代码:
childObject.transform.parent = parentObject.transform;
有点意思,其实我以为会直接指定 parent,没想到居然用到 transform 组件。
Transform 组件

Transform 这个组件是 GameObject 一定有的,即使这个 GameObject 是 Empty GameObject,但它一定有 Transform 组件:
A GameObject will always have a Transform component attached - it is not possible to remove a Transform or to create a GameObject without one.
当存在“父子关系”的时候,就有了世界坐标系和局部坐标系的概念,经典的利用“父子关系”以及局部坐标系的例子比如:旋转的房门。
管理


[*]移动 parent object 会移动所有的 child object
[*]缩放 parent object 会缩放所有的 child object
[*]销毁 parent object 会销毁所有的 child object
这些都是使用 parent 来管理一群同类物体的好处,比如:
Destroy(parent);
相比使用 Tag 来管理的话代码更简短一些:
void DestroyWithTag (string destroyTag)
{
    GameObject[] destroyObject;
    destroyObject = GameObject.FindGameObjectsWithTag(destroyTag);
    foreach (GameObject oneObject in destroyObject){
      Destroy (oneObject);
    }   
}
参考:

[*]Transforms
[*]Transform.parent
页: [1]
查看完整版本: Unity “父子关系”