因为这个问题,导致我花了半天时间来调,可恶之极!真相必须公布以后快!
在一个逻辑里,我需要根据新的数组将原来的显示列表重新,为了性能,我进行差异更新,把需要删除的个数删除,其它的只更新。于是问题就出在对父级的理解上。我只是调用了Destory(),但其实他不是立即执行,并将对象从显示列表(AS用惯了,就这么叫吧)移除。这导致我在计算差异集时出错,而只需要在销毁之前先将对象的父级置空就解决了问题。我只想说一句,我X!!
while (ii<ct) { tr = transform.GetChild(ii); tr.SetParent(null);//就是这一句,必须有。不然逻辑上不会立即将父级的子级个数更新,导致逻辑错误! Destroy(tr.gameObject); //GameLog.log("删除:"+ii+" ct:"+ct); ii++; }
转载请注明原文地址: https://ju.6miu.com/read-1305786.html