赞
踩
今天在看项目框架之时看到空场景清理内存的相关操作,有些不明,故查了资料,看到一篇文章,链接:https://gameinstitute.qq.com/community/detail/106992
Unity加载新的场景时,所有的内存对象都会被销毁,包括Assetbundle.Load加载的对象和Instantiate克隆的对象。但从上一篇博客也可以看到,Assetbundle的加载中还有一份Assetbundle文件的镜像内存的存在,这个是不会在切换场景时被清理掉的,需要我们手动清理,这种数据缓存用.Net的术语是属于非托管的。
AssetBundle.Unload(false):释放AssetBundle文件内存镜像
AssetBundle.Unload(true):释放AssetBundle文件内存镜像同时销毁所有已经Load的Assets内存对象
Reources.UnloadAsset(Object):显式的释放已加载的Asset对象,只能卸载磁盘文件加载的Asset对象
Resources.UnloadUnusedAssets:用于释放所有没有引用的Asset对象
GC.Collect()强制垃圾收集器立即释放内存 Unity的GC功能不算好,没把握的时候就强制调用一下
在场景A到B的切换间,插入一个空场景X,空场景的作用就是承上启下,负责清理场景A的资源然后再切换到场景B。具体的使用就不多说了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。