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

销毁所有子物体所用的时间,基本相同

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

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

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值