Unity3D 如何干净的解除父子关系

之前我一直用的都是下面这种方法

//清除原来的按钮
        if (this.transform.childCount > 0)
        {
            for(int j=0;j

以前做没发现问题,现在的功能是先删除子物体,然后再重新添加,当我去获取子物体的个数的时候,发现数值比添加的要多一些。上网查了才发现,原来删除子物体,并不会立马改变childCount的数量,所以会childCount会加上原来的,就不是我们想要获取的数值。

还有一种解除父子关系的方法是

this.transform.DetachChildren();

但是该方法不会删除子游戏物体,只是解除了父子关系,所有的子物体将直接成为场景内的物体存在。 

用了这种方法,我们想再去删除场景中的这个被解除的子物体就没办法找到。

所以我就想到了先解除父子关系,然后再删除这个子物体。

 if (this.transform.childCount > 0)
        {
            for(int j=0;j< this.transform.childCount;)
            {
                GameObject go= this.transform.GetChild(j).gameObject;
                go.transform.SetParent(null);
                Destroy(go);
                
            }
        }

这里要注意,先移除了子物体,所以父物体的数量在递减,就不需要j--了,我们只需要一直删除第一个就可以删除完了。

这时候再获取父物体的childCount就是0了。

你可能感兴趣的:(Unity3D合集)