unity中的Destroy和DestroyImmediate

今天要写一个问题考核的小东西,本来很快就写完了,但是有一点卡壳了,在刷新答案的时候要把当前答案框里的答案全部销毁,然后创建新的答案(答案都是按钮,且数量不定),我通过debug发现每次销毁后,框内虽然没有上道题的答案了,但是输出答案的父节点的childcount都显示大于0,后来查阅了资料才发现,Destroy这个方法,不会立即删除对象,而是会在下一帧才上销毁,在同一帧的时候他会先把对象存储在内存中,防止如果在同一帧在destroy后还调用了要销毁的对象,而DestroyImmediate会在同一帧立即删除当前对象

但是还有一个问题,如果用DestroyImmediate,那此对象在父节点中会立即删除,那么在其后的对象的下标都会向前移一位,所以如果这个方法遍历删除某一对象下的子节点时就要用下面的这个方式

int num = resultP.childCount;
        for (int i = 0; i < num; i++)
        {
            DestroyImmediate(resultP.GetChild(0).gameObject,true);//在当前帧立即销毁该资源
        }

参考链接:蛮牛u3d手册

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值