? Unity项目优化总结_牛聚文档

Unity项目优化总结

Unity项目优化总结
预览:

Unity项目优化总结

1、IOS闪退优化

A:IOS上C#代码通过AOT(Ahead of time)编译,而不是JIT(Just in time)。AOT 实现反射机制需要预先分配一块内存存类的元数据,当过度使用泛型时导致类元数据

过大,预分配内存不够就闪退抛出“trampoline out of memery”异常。默认nrgctx-trampolines=1024,nimt-trampolines=1024,ntrampolines=512,建议优化为nrgctx-trampolines=2048,nimt-trampolines=2048,ntrampolines=1024。

B:逻辑上有一条路径出现无限递归导致栈溢出闪退。

C: IOS上不支持字符集”GBK”导致闪退,改成“gbk”。

D: 程序逻辑出现两个空指针异常导致闪退。

2、纹理优化

目前纹理峰值占用能够到110M,纹理普遍压缩率不够或没有压缩,而且场景切换

一些资源未卸载,导致内存高。纹理包括 UI 、场景、特效、人物纹理等等,优化后保证纹理在50M以内,优化方式如下:

A、纹理压缩格式:目前纹理格式要么没压缩,要么普遍采用Automatic Compressed,这个格式将RGBA 32bits压缩为RGBA16 bits,压缩率不高。建议纹理压缩格式如下:

Android 平台: RGBA Compressed ETC1+alpha bits(25%压缩率)

IOS平台: RGBA Compressed PVRTC 4 bits(1/8压缩率)

B、纹理缓存的问题,目前程序之中设置的当机器可用内存大于50M时切换场景不释

放资源,导致一些常驻内存没有释放。建议调大这个阀值或者去掉这种策略。

C、禁止纹理的MipMaps生成。

D、纹理打图集的问题,建议装备图标和技能图标都打图集,降低UI DrawCall和IO

次数。采用纹理压缩格式,这部分内存占用不会太大。

总结:纹理优化后,纹理内存从72M降低到30M。

第1页/共7页 下一页>尾页