Unity删除所有子物体保留父物体的2种方式

来源:互联网 发布:python 拉钩 源代码 编辑:程序博客网 时间:2024/06/06 04:37
销毁所有子物体所用的时间,基本相同

方法一:找到所有子物体,依次销毁

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次。