Version: Unity 6.0 (6000.0)
语言 : 中文
启用绘制调用批处理
手动组合网格

启用静态批处理

Unity 可以在构建时和运行时执行静态批处理。通常,如果在构建应用程序之前游戏对象就存在于场景中,请使用编辑器在构建时对游戏对象进行批处理。如果在运行时创建游戏对象及其网格,请使用运行时 API

使用运行时 API 时,可以更改静态批处理根的变换属性。这意味着可以移动、旋转或缩放构成静态批处理的整个网格组合。无法更改单独网格的变换属性。

要对一组游戏对象使用静态批处理,游戏对象必须符合静态批处理的条件。除了常见使用信息中所述的标准外,请确保:

  • 游戏对象处于活动状态。
  • 游戏对象有一个网格过滤器 (Mesh Filter) 组件,并且该组件已启用。
  • Mesh Filter 组件包含对网格的引用。
  • 网格的顶点数大于 0。
  • 网格尚未与另一个网格组合。
  • 游戏对象有一个网格渲染器 (Mesh Renderer) 组件,并且该组件已启用。
  • Mesh Renderer 组件不使用任何将着色器 DisableBatching 标签设置为 true 的材质。
  • 要一同进行批处理的网格使用相同的顶点属性。例如,Unity 可以将使用顶点位置、顶点法线和一个 UV 的网格进行批处理,但无法将使用顶点位置、顶点法线、UV0、UV1 和顶点切线的网格进行批处理。

注意:要使用运行时静态批处理,还必须将网格设置为已启用读/写权限。

有关静态批处理性能影响的信息,请参阅性能影响

构建时的静态批处理

可以在编辑器中在构建时启用静态批处理。

要在构建时执行静态批处理,请执行以下操作:

  1. 转到编辑 (Edit) > 项目设置 (Project Settings) > 播放器 (Player)
  2. 其他设置 (Other Settings) 中,启用静态批处理 (Static Batching)
  3. 在场景 (Scene) 视图或层级视图 (Hierarchy) 中,选择要进行批处理的游戏对象,并在检视面板 (Inspector) 中查看该游戏对象。
    提示:可以同时选择多个游戏对象来为所有游戏对象启用静态批处理。
  4. 在游戏对象的静态编辑器标志 (Static Editor Flags) 中,启用静态批处理 (Batching Static)

如果特定的静态网格满足常见使用信息中所述的条件,Unity 会自动将它们批处理至同一绘制调用中。

游戏对象的检视面板中的静态编辑器标志复选框。
游戏对象的检视面板中的静态编辑器标志复选框。

注意:如果在构建时执行静态批处理,Unity 不会在运行时使用任何 CPU 资源来生成静态批处理的网格数据。

运行时的静态批处理

为了在运行时将静态网格进行批处理,Unity 提供了 StaticBatchingUtility 类。静态 StaticBatchingUtility.Combine 方法将传入的游戏对象组合在一起,并为静态批处理做好准备。这对于在运行时以程序方式生成的网格特别有用。

与构建时的静态批处理不同,运行时批处理不需要启用静态批处理播放器 (Player) 设置。有关如何使用此 API 的信息,请参阅 StaticBatchingUtility

启用绘制调用批处理
手动组合网格