Unity材质球和静态物体导致的内存泄漏

在Unity开发中,经常会遇到通过代码去控制某些材质球的某些属性的改变。但当退出该场景的时候,你所控制的材质球并没有销毁,这是因为你在获取它的时候,Unity会自动的实例化一个新的材质球替代该材质球,而且它并不会在场景销毁的时候一并销毁掉。所以你需要将这些生成出来的材质球在场景销毁的时候一并给销毁掉。
这张图是第一次进入场景时实例化的材质球
这张图是第一次进入场景时实例化的材质球

这张是第二次加载场景后,内存中实例化的材质球。
第二次加载场景后

不光材质球,静态物体也有这种问题。如果你的场景模型需要勾选静态合批,Unity会将你的需要合批的模型Mesh整合成一个新的Mesh赋予这些物体,这个新的Mesh叫Combined Mesh(root:scene)它也不会因为场景的卸载而删除。所以也需要我们手动的将所有的Mesh删除掉,只需要找到所有的静态物体,将他们MeshFilter组件的sharedMesh全部Destroy就可以了。
第一次进入场景后的Mesh
第一次进入

第二次进入场景后的Mesh
第二次进入场景

猜你喜欢

转载自blog.csdn.net/weixin_37836657/article/details/125933567
今日推荐