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/

posted @ 2024-08-09 10:38  xxxxxxxxxxjh  阅读(140)  评论(0)    收藏  举报