方法一:找到所有子物体,依次销毁
using UnityEngine;
using System.Collections;
/// <summary>
/// 脚本位置:将此脚本挂载到父物体A身上
/// 脚本功能:用于测试销毁所有子物体
/// </summary>
public class Parent : MonoBehaviour
{
void Start ()
{
for (int i = 0; i < transform.childCount; i++) {
Destroy (transform.GetChild (i).gameObject);
}
}
}
方法二:给每个子物体添加一个自我销毁的方法,在满足特定条件的情况下发送广播
using UnityEngine;
using System.Collections;
/// <summary>
/// 脚本位置:将此脚本挂载到父物体A身上
/// 脚本功能:发送广播给自己和自己的所有子物体
/// </summary>
public class Parent : MonoBehaviour
{
void Start ()
{
// 执行Start方法后会发送一个广播
// 广播会从自身开始查找这个DestoryMe方法,查找完自身后会查找所有子物体
BroadcastMessage ("DestoryMe");
}
}
using UnityEngine;
using System.Collections;
/// <summary>
/// 脚本位置:每个需要被销毁的子物体身上
/// 脚本功能:销毁自身
/// </summary>
public class Son : MonoBehaviour
{
// 作为被广播通知的方法,由父物体通知执行
public void DestoryMe ()
{
Destroy (gameObject);
}
}
总结:这两种方法本质上都是遍历,销毁所有子物体所用的时间基本相同。
第二种广播方法的方法也是遍历,但会从自身开始遍历,所以说,第二种方法会比第一种方法多遍历1次。