洪流学堂,让你快人几步。你好,我是大智。
遇到卡顿性能问题,可以从以下几个方面依次检查优化。

SetPass Call太高

Draw Call造成的性能问题大部分出在SetPass Call上面。可以从以下几个方面入手。
  • 减小相机的视距(增加雾效消除断层的感觉)
  • 开启材质的GPU Instancing(需要GPU支持,如果想优化到极致,可以代码调用DrawMeshInstanced 批量绘制或使用插件:GPU Instancer)
  • 开启Static Batching(不适用于大量重复的物体,会大幅增加硬盘及内存占用)
  • 开启Dynamic Batching(仅适用于顶点小于900的物体,同时会消耗更多CPU,比较鸡肋)
  • 以上三个生效顺序:Static Batching > GPU Instancing > Dynamic Batching
  • 遮挡剔除Oculusion Culling(场景遮挡很少的情况不适用)
  • 合并材质和Mesh(合并贴图到一张图集,最好是美术同学优化,Unity插件:Simplygon、MeshBaker、Poly Few,也可以使用各个建模软件中的工具,比如Blender中的BakeTool)
  • 按需制作LOD(自动生成LOD插件:Poly Few、 Mantis LOD Editor 、Ultimate LOD System MT)
  • 如果有地形记得开启地形设置中的Draw Instanced,如果地形太大记得拆分开(插件:Terrain Slicing & Dynamic Loading Kit),也可以替换内置地形shader解锁更高性能(插件:Relief Terrain Pack v3.3)

Batches太高

Batches数据也就是常说的Draw Call。
  • 合并Mesh(合并Mesh的时候注意仅合并相近的物体,否则可能会起反作用,导致其他性能问题。插件:Simplygon、MeshBaker、Poly Few)

CPU太高

CPU太高很大一部分问题是上述的渲染造成的,如果上述都优化完毕后,可以检查代码问题。
  • 代码问题(使用Profiler定位后,自行修改代码,计算量大的可以隔帧计算)

内存占用太高

  • 模型减面(插件:Poly Few、Simplygon,极端情况还可以用Imposter(Simplygon、Amplify Imposter))
  • 贴图压缩(可以在Unity的贴图导入中设置)
  • 音频压缩(设置为单声道)
  • 检查代码中占用大量内存的问题

GPU太高

  • 模型减面(每个模型顶点都要通过顶点着色器处理)(插件:Poly Few、Simpolygon,极端情况还可以用Imposter(Simpolygon、Amplify Imposter))
  • 减小输出分辨率(每个屏幕输出像素都要通过片元着色器处理)
  • 减少Shader复杂度
本文将持续更新,最新版请在 洪流学堂 公众号中回复 性能优化小抄 获取。 本文仅是非常简略小抄,后续公众号中会更新性能优化的各种方法、原理、工具等教程。
Unity性能优化交流群:977676006
你还有什么性能优化小技巧,欢迎在评论区分享给大家~
Logo

分享前沿Unity技术干货和开发经验,精彩的Unity活动和社区相关信息

更多推荐