关于解除父子关系首先看下官方给出的讲解代码。
using UnityEngine;
using System.Collections;
public class example : MonoBehaviour {
public void Awake() {
transform.DetachChildren();//解除父子关系
Destroy(gameObject);//清除gameObject;
}
}
官方给出解除父子关系的函数。
利用官方给出的函数DetachChildren()编写一个简单的递归算法,实现对该父级的所有子级的分离(包括子级的子级)。通过TransRelieve方法实现。对该方法简单修改也能实现对所有子级的删除,就是把DetachChildren()函数改为Destroy(gameObject)即可。
代码如下:
void TransRelieve(GameObject gameobject)
{
if (gameobject.transform.childCount != 0)
{
for (int i = 0; i < gameobject.transform.childCount; i++)
{
TransRelieve(gameobject.transform.GetChild(i).gameObject);//递归,优先分离子级的子级
gameobject.transform.GetChild(i).DetachChildren();
}
}
}