Unity性能优化之静态资源

Unity资源工作流程

        利用资源优化工具Asset Checker可快速获知项目中不合理的资源情况。

Audio

1.简短或重复性的音频应选用.WAV格式,长音乐可选择.mp3格式

2.移动平台压缩格式(Compression Format)应选择Vorbis,背景音乐可选择MP3,简短长效的音效可选择ADPCM格式(解码速度快);

3.移动平台的音频采样率设置(Sample Rate Setting)应不高于22050Hz;

4.音频加载类型(Load Type),针对压缩后不大于200KB的应选择Decompress On Load,否则应选Compress In Memory,对于背景音乐或较长较大的音效应选择Streaming流式传输,以避免载入时卡顿;

5.在需要静音时,应将Audio Source组件销毁卸载,节省内存空间;

6.若音频的双声道相同,则可勾选强制单声道(Force To Mono)以节省内存及大小,尤其在移动平台上不会产生体验差异;

Model

1.模型应尽量使用.fbx格式,其他格式无法应用在运行时环境;

2.建模时应注意:

        a.最小化面数;b.三角面尽量分布均匀;c.合理的拓扑结构与平滑组;

        d.尽量少的材质数,蒙皮网格,骨骼数量;

        e.FK与IK节点分离,便于导出时删除IK;

3.模型导出时应注意:

        a.单位统一;b.网格为多边形拓扑;c.所有Deformers都烘焙到网格模型上;

        d.不建议纹理随模型导出;e.需导入Blend shape normal时指定光滑组Smooth groups;

        f.不携带摄像机,灯光,材质等信息;g.移除IK节点(Unity不支持);

4.模型导入时的设置:

Model

        a.Scene下的选项非必要可关闭;确保Mesh没问题时,可开启Mesh Compression以节省磁盘空间;

        b.Skin Mesh及运行时需动态修改网格数据时,应开启Read/Write选项(会在内存中复制一份Mesh);

Rig

        c.若模型不需要动画相关设置,应将Animation Type设置为None;

Animation

        d.模型无动画时,应将Import Animation关闭;

Materials

        e.模型无动画时,应将Material Creation Mode设置为None;

        f.Project Settings-->Player-->Vertex Compression(对模型的位置、光照贴图、uv外的内容进行压缩)及Optimize Mesh Data(删除Mesh中多余的数据,开启后不能更改相应的材质和着色器)可根据情况开启;

Texture

1.开启Mipmaps以检查场景中纹理采样情况,红色为过采样、蓝色为欠采样(天空盒及远景可忽略);

2.当贴图未用作颜色信息时,不应使用sRGB颜色空间,如金属度贴图、粗糙度贴图等;

3.在渲染中采用ASTC(全新格式),ETC,ETC2(移动平台),DXT(PC平台),PVRTC(iOS平台)等硬件支持的纹理压缩格式,节省内存空间;

4.相同材质着色器的纹理使用纹理图集;

5.纹理设置:

        a.Texture Shape中,Cube一般用于天空盒、反射探针;2D Array(2D纹理数组),能极大提高大量相同大小、格式纹理的访问效率,但需特定平台支持;3D通过纹理位图储存或传递3D结构化数据,一般用于体积仿真(Fog、噪声、体积数据、距离场等);

        b.Alpha Source若不使用原图Alpha通道可选择None,否则默认Input Texture Alpha;

        c.Alpha Is Transparency指定Alpha通道是否开启半透明,不需要时可关闭节省内存;

        d.Ignore PNG file gamma默认美术设即可;

        e.需动态读写纹理时,应开启Read/Write选项(会在内存中复制一份纹理);

        f.Generate Mip Maps在2D场景或固定摄像机远近的情况下无需开启。Border Mip Maps当纹理为Light Cookies时开启;Mip Map Filtering选择Box时随尺寸减小,Mipmap纹理变得平滑模糊,选择Kaiser时会进行锐化过滤避免平滑模糊;Mip Maps Preserve Coverage纹理需要Alpha Coverage时开启;Fadeout Mip Maps纹理Mipmap随Mip层淡化为灰色,只有在雾效较大时开启不影响视觉效果;

        g.Filter Mode选用双线性以平衡性能和质量,三线性需更多内存带宽;

        h.Aniso Level各向异性过滤,当使用双线性过滤时一般选2x,对于关键资源使用高于2的级别;

        i.纹理压缩格式(https://zhuanlan.zhihu.com/p/457822156)

Animation

1.模型导入时的设置:

Rig

        a.Animation Type非人形动画选择Generic;人形动画需要Kinematic或Animation Retargeting或有自定义骨骼对象是选Humanoid Rig,否则选Generic Rig以节省CPU时间;

        b.Skin Weights对于不重要的对象可减少至1根,节省计算量;

        c.Optimize Bones勾选时,在导入时自动剔除无蒙皮顶点的骨骼;

        d.Optimize Game Objects在Avatar和Animator组件中删除导入游戏对象的变换层级结构,而使用Unity动画内部结构骨骼,减少性能开销。有些情况下可能会导致动画错误。在换装游戏中,导入时不能开启此项,但换装后可调用AnimatorUtility.OptimizeTransformHierarchy开启;

Animation

        e.Anim. Compression动画压缩格式。Off不压缩,质量最高,内存占用大(Unity中即便不压缩,动画也与原始效果有所差距,只是肉眼不易发现);Keyframe Reduction减少冗余关键帧,以减少文件大小及内存占用;Keyframe Reduction and Compression减少关键帧同时对其数据进行压缩;Optimal由Unity自行选择最佳压缩模式;

        f.Rotation/Position/Scale Error表示两帧数据的旋转/位置/缩放在指定误差范围内(单位%)的视为一致,从而减少关键帧数量;

2.动画曲线数据信息:

Curves Pos位置曲线;Quaternion四元数曲线;Euler欧拉曲线;Scale缩放曲线;Muscles肌肉曲线(Humanoid类型下);Generic一般属性动画曲线(如颜色、材质等);PPtr精灵动画曲线(2D);Curves Total曲线总数(数值越大代表动画播放性能消耗越大);Constant优化掉的曲线(括号内为优化率);

最后一行为动画文件大小(不大于400KB为合理,重点查看1MB以上的动画文件)。

  • 9
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值