内存管理方向主要分为:
1.硬盘文件:assetbundle文件
2.内存文件:assetbundle镜像文件
3.assetbundle内资源:asset
4.场景内资源:instantiate-object
1.对于AssetBundle硬盘文件,如何优化?
- 修改不同的压缩方式,减少占用大小
- 剔除冗余资源
2.对于AssetBundle内存文件,如何优化?
- 某些加载出来就一直在内存里面的资源,可以assetBundle.Load以后,直接调用assetbundle.Unload(false)
assetbundle.Unload(false),只卸载assetBundle内存镜像。
assetbundle.Unload(true),卸载内存镜像的同时,也卸载所Load出来的资源。(变粉色)
3.对于assetbundle内资源文件,如何优化?
- 如果没有其他对此有依赖关系的资源,就可以释放此资源。
Resources.Unload(obj):卸载指定资源。
Resources.UnloadUnusedAssets():卸载所有没有引用的资源。
注意:不能卸载 Gameobject,只能调用Destory,否则会报错。
如图所示。
4.对于场景内的资源,如何优化?
使用Destory(go)释放资源,并且把prefab资源设为null。
this.asset = null;
Destroy(this.go);
而不是 Resources.UnloadAsset(this.asset)