1、音频
(1)开启Force To Mono,强制单通道
(2)加载方式:
Streaming(边加载边播放、内存小、CPU消耗大):背景音乐
Decompress On Load(加载时解压、内存大、CPU消耗小):适用于短小音频
Compressed In Menory(压缩格式存在内存中、播放时解压、内存小、CPU消耗大):适用于大型音频文件
(3)压缩格式:
PCM:高保真、占用内存最大
Vorbis:压缩比最高、有损压缩、质量低
ADPCM:基于PCM的优化压缩、有损压缩
图 1-12、网格
图 2-1(1)Mesh Compression:只影响占用磁盘大小,不影响内存占用。但是测试发现该压缩为有损压缩,如果使用High等级的压缩,游戏中效果会差很多。应该提前和美术约束每种模型Mesh数量的上限,这样就减少了后期优化的工作。
Mesh Compression分4个等级:Off、Low、Medium、High
(PlayerSettings中Vertex Compression影响运行时内存大小)
(2)Optimize Mesh:重新排列多边形和顶点顺序,提高GPU性能
(3)Read\Write Enabled
(4)剔除无用的属性:顶点颜色、UV2、UV3、UV3、Normal、Tagent
Player Settings中Optomize Mesh Data打开可以剔除Mesh中无用的属性,但是该选项只是静态分析引用某个Mesh的材质的shader有没有用到这些属性,如果用到了就不会删除,未用到删除,这样可能导致代码中动态使用某个属性就会出错。可以关闭该选项,写工具剔除某些确定不用的属性。
图 2-2(5)关闭Skinned Mesh Render中的Motion Vector(运动向量,一般用于运动模糊等后处理特效)开关,减少显存开销
(6)模型骨骼数量:建议小于50,这个提前和美术约束不同模型骨骼上限
3、特效
图 3-1(1)限制最大粒子个数:一般Billboard渲染模式粒子发射数不超过30;Mesh模式网格发射数不超过5
(2) Prewarm选项关闭:开启后会执行一次完整的模拟,可能导致第一帧加载的卡顿
(3) 限制特效使用贴图总数、贴图尺寸、ParticleSystem组件数量
(4) DrawCall\Overdraw
4、动画
(1)压缩动画精度(只影响打包大小)、保留小数点后3位,剔除Scale曲线(影响内存大小)。我们项目实测每个动画文件减小至少35%,包体减小30M,占用内存减小3%左右。图4-2为处理前后动画文件对比。
图 4-1 图 4-25、材质及Shader
(1) 清除序列化文件冗余引用
图 5-1(2) 替换Standard Shader
(3) 添加关键字避免无用计算,剔除无用变体
6、纹理
(1)纹理尺寸:尽量控制在512*512以下;
(2)MipMap选项:开启占用内存多出1/3,图集肯定关闭,其它图片依情况而定;
(3)压缩格式:直接使用ASTC格式,(OpenGL3.0以上、A8处理器以上支持)。图6-1和6-2列出参考值,具体使用还要以个人项目实测为准。
图 6-1(图片引用地址 https://zhuanlan.zhihu.com/p/158740249) 图 6-2(图片引用地址 https://zhuanlan.zhihu.com/p/158740249)(4)在无特殊要求时,尽量使用POT(Power Of 2)纹理,并且制作时尽量按照实际应用尺寸来制作,避免一些高精度压缩到低精度使用的情况。
(5)Crunch压缩(有损压缩,轻微损失)
可以对DXT或ETC纹理进一步压缩,减少包体体积,但Crunch纹理出入GPU时自动解压为DXT/ETC纹理,所以加载时会有解压时间消耗。
网友评论