Unity 性能优化方案

Unity 性能优化方案

👹

插件

  • build report tool

减少Draw Call

  • Draw Call 是指一次调用 GPU 绘制操作的过程,也可以理解为一次向 GPU 提交绘制命令的过程。每次 Draw Call 都会消耗一定的 CPU 和 GPU 资源,因此过多的 Draw Call 会导致游戏的性能下降
    • 合批(Batching):合批是指将多个网格渲染器(Mesh Renderer)或粒子系统(Particle System)合并成一个网格渲染器或粒子系统,从而减少 Draw Call 的数量。在 Unity 中,有两种合批方式:静态合批(Static Batching)和动态合批(Dynamic Batching)。静态合批是在编辑器中进行的,可以将多个静态网格渲染器合并为一个静态网格,从而减少 Draw Call 的数量。动态合批是在运行时进行的,可以将动态网格渲染器和粒子系统合并为一个动态网格或粒子系统,从而减少 Draw Call 的数量。

    • 减少材质(Material)的数量:每个材质都需要一个 Draw Call 来渲染,因此减少材质的数量可以减少 Draw Call 的数量。可以将多个网格渲染器使用相同的材质,或者使用材质球(Material Property Block)来动态修改材质的属性。

    • 使用贴图集(Texture Atlas):贴图集是将多个小贴图合并成一个大贴图的技术,可以减少 Draw Call 的数量。在 Unity 中,可以使用 Sprite Packer 工具将多个 Sprite 合并成一个贴图集。

    • 使用 LOD(Level of Detail):LOD 是一种通过在不同距离下使用不同的网格来减少 Draw Call 的数量的技术。在 Unity 中,可以使用 LOD Group 组件来设置不同距离下使用的网格。

    • 使用 GPU 实例化(GPU Instancing):GPU 实例化是一种通过使用统一的网格和材质来渲染多个实例的技术,可以减少 Draw Call 的数量。在 Unity 中,可以使用 Material 类中的 EnableInstancing 方法来启用 GPU 实例化。

    • 减少不必要的渲染:可以使用 Frustum Culling 和 Occlusion Culling 等技术来避免渲染不可见或被遮挡的物体,从而减少 Draw Call 的数量。

作者

发布于

2023-05-19

更新于

2023-11-23

许可协议