项目优化之——加载

来源:互联网 发布:海淘用哪个软件 编辑:程序博客网 时间:2024/04/19 08:25

加载优化主要从一下几块着手:纹理、网格、shader、动画


纹理:

尽量采用硬件支持格式,安卓(ETC1、ETC2),ios(PVRTC)

对于UI和一些不必要对纹理在运行时进行处理的关闭Read/Write,打开这个会使内存占用翻倍

纹理分辨率采用2的n次方

对于UI和一些不需要远近处理的纹理关闭mipmap

纹理的分辨力率尽量小,够用就好的原则


网格:

顶点、面片数量秉持够用就好的原则

顶点属性:position、uv、normal、tangent、color。normal和tangent一样,会增加物理题及,影响加载性能、和内存占用,要尽量简化顶点属性。在使用DrawCall Batching时,切忌将拥有不同顶点属性的网格模型拼合在一起,因为在进行batching过程,只要又一个网格模型具有某种顶点属性,就会为其他每个网格加上相应的顶点属性,严重影响各种性能

如果在项目中不会对网格惊醒读写操作(比如Morphing动画等),则将Read/Write功能关闭。既可以提升加载效率,又可以大幅度降低内存占用


Shader:

降低Keywords数量:比如比较简单的shader可以去掉Fallback

将shader进行依赖打包,在游戏初始化运行的时候加载shader,对于Unity5.x版本,除执行LoadAllAssets操作外,还需要进行Shader.WarmupAllShaders操作,因为在Unity5.x版本中,Shader的解析和CreateGPUProgram操作是分离的。

对于Unity 5.x版本且正在使用Resources.Load来加载资源的研发团队,可以尝试使用ShaderVariantCollection来对Shader进行Preload,同样也可以达到避免相同Shader重复加载的效果。(尽量避免这种方式,仍存在某些不确定性问题)


动画:

对动画进行压缩:

请输入图片描述

Unity引擎对导入的AnimationClip提供三种压缩格式,Off、Keyframe Reduction和Optimal。其中,Off表示不采用压缩处理;Keyframe Reduction表示使用关键帧进行处理,Optimal则表示Unity引擎会根据动画曲线的特点来自动选择一个最优的压缩方式,可能是关键帧压缩,也可能是Dense压缩。


0 0
原创粉丝点击