Unity的极致内存优化
之前做了一个moba游戏,需要对项目做极致的内存优化。
我们知道,AssetBundle有Unload(true) 和Unload(false)两种做法。
一些常规做法就不说了,
比如统计资源的出生死亡频率/时常,来设置资源的回收频率。
比如,决定资源缓存到哪个级别:实例、预制体、主AssetBunle、依赖的AssetBunle、内存Asset镜像、缓存、网络。
比如,引用计数=0时Unload(true)。
只简单说下极限情况下优化内存的Unload(false)做法。
1.我们生成资源统计表时,每个Assetbunlde,要记录它的最大被依赖数 X。
2.加载Assetbunlde时,将依赖Assetbunlde的被依赖数 M++
3.当依赖Assetbunlde的 M ==X时,表明它的被依赖量达到最大,说明这个时候,整个环境不会再有被依赖的情况,所以Unload(false)。
通过这一系列的做法,我将游戏的战斗内存峰值,从780M优化到350M。