1、对象池
2、检查内存是否泄露。内存持续上升(闭包、委托造成泄露)
3、检查DrawCall数量,尽量减少SetPassCall
4、尽量多的利用四种合批
- 动态合批(Dynamic Batching)
- 静态合批(Static Batching)
- GPUInstancing
- SRP Batcher
动态合批消耗内存把多个网格组合在一起合并提交渲染, 既然是网格合并,那对合并的物体有很多要求
静态合批就是提前把物体的网格缓存一份。
GPUInstancing是利用GPU控制顶点动画,略过了CPU额外处理那一步
SRP Batcher的原理是缓存渲染数据和渲染状态,只有这俩发生变化时才会提交Drawcall,因此也是浪费内存换效率的做法。
5、3D游戏 LOD技术
LOD原理就是把远处的物体换个低模,顶点和面数少了,渲染压力自然就下来了。
6、资源压缩节约内存
7、伤害跳字数量多优化
一般的几个跳字可以不管,但如果UI非常多,并在在字体发生各种动画时可能会造成DrawCall多浪费的情况,因此可以利用顶点合并,或者GPU控制顶点等骚操作优化伤害跳字。
8、加载卡顿时考虑分帧加载或预加载
加载大量对象卡顿时,可以考虑分帧加载,或者预加载,这个要酌情考虑。