内存优化主要从以下几个方面入手:
1.资源内存占用;2.引擎模块自身内存占用;3.托管堆内存占用。
一、资源内存占用
1、资源冗余:
什么时候会出现内存冗余:在通过AssetBundle.Unload(false)卸载AssetBundle对象后,如果重新创建该对象并加载之前加载过的资源到内存时,会出现冗余,即两份相同的资源。
被脚本的静态变量引用的资源,在调用Resources.UnloadUnusedAssets时,并不会被卸载
资源冗余
一、AssetBundle打包机制出现问题
同一份资源被打入到多份AssetBundle文件中
二、资源的实例化所致
一般情况下,资源属性的改变情况都是固定的,并非随机出现。比如,假设GameObject受到攻击时,其Material属性改变随攻击类型的不同而有三种不同的参数设置。那么,对于这种需求,我们建议你直接制作三种不同的Material,在Runtime情况下通过代码直接替换对应GameObject的Material,而非改变其Material的属性。这样,你会发现,成百上千的instance Material在内存中消失了,取而代之的,则是这三个不同的Material资源。其中的益处,对于能够阅读到这里的你来说,应该已经不需要我多说了。:)
ManagedHeap.UsedSize 优化:
该项为项目逻辑代码在运行时申请的堆内存,,一般优化方法为