今天要写一个问题考核的小东西,本来很快就写完了,但是有一点卡壳了,在刷新答案的时候要把当前答案框里的答案全部销毁,然后创建新的答案(答案都是按钮,且数量不定),我通过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手册