Unity性能优化小抄
洪流学堂,让你快人几步。你好,我是大智。遇到卡顿性能问题,可以从以下几个方面依次检查优化。SetPass Call太高Draw Call造成的性能问题大部分出在SetPass Call上面。可以从以下几个方面入手。减小相机的视距(增加雾效消除断层的感觉)开启材质的GPU Instancing(需要GPU支持,如果想优化到极致,可以代码调用DrawMeshInstanced 批量绘制或使用插件:GP
·
洪流学堂,让你快人几步。你好,我是大智。
遇到卡顿性能问题,可以从以下几个方面依次检查优化。
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
你还有什么性能优化小技巧,欢迎在评论区分享给大家~
更多推荐
所有评论(0)