unity destory的坑
网上已经有相关信息,这里只是为自己记录一下
destory
只是将他标记为需要删除,并不会马上删除和清理缓存,会在当前帧结束时(也即是在当前帧不能直接删除掉所有的物体),将所有标记为需要删除的对象,进行删除和缓存清理,它是异步执行的,不会影响主线程的执行,并且更加节省性能。所以说在当前帧是不能删除掉对象下的所有子物体
DestroyImmediate
实时删除对象和清除缓存,会导致主线程卡顿,也就是游戏卡顿,并且每次都是单次调用,会导致消耗更多的资源,因为准备清除缓存和缓存清除之后的过程,都是需要消耗资源的。其次,使用DestroyImmediate会将对象下的所有子物体在场景和内存中都删除掉,后续就不能再使用对象下的子物体。
当 gameOjbect 被destroy之后, test as UnityEngine.Object会返回null
也可以可以通过 (Ojbect)test==null 判断对象是否要被删除
用对象池,干脆不用destory了会更好
参考:
https://blog.csdn.net/weixin_43932372/article/details/137479386
https://blog.csdn.net/makyocute/article/details/130240356
https://huosk.github.io/2019/11/20/UnityObjectDestrayInDetail/

浙公网安备 33010602011771号