版本:Unity 6 (6000.0)
语言:英语
静态批处理简介
批处理移动游戏对象

启用静态批处理

Unity 可以在构建时和运行时执行静态批处理Unity 使用的一种技术,用于将屏幕上的游戏对象绘制组合在一起,即将静态(非移动)游戏对象组合成大型网格,并以更快的速度渲染它们。 更多信息
参见 术语表
。通常,如果游戏对象Unity 场景中的基本对象,可以表示角色、道具、场景、摄像机、路径点等。游戏对象的功 能由附加在其上的组件定义。 更多信息
参见 术语表
存在于构建应用程序之前的场景场景包含游戏环境和菜单。可以将每个唯一的场景文件视为一个唯一的关卡。在每个场景中,你放置环境、障碍物和装饰,本质上是分块设计和构建你的游戏。 更多信息
参见 术语表
中,请使用编辑器在构建时对游戏对象进行批处理。如果在运行时创建游戏对象及其网格,请使用运行时 API

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

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

  • 游戏对象处于活动状态。
  • 游戏对象具有网格过滤器一个网格组件,它从你的资源中获取网格并将其传递给网格渲染器,以便在屏幕上进行渲染。 更多信息
    参见 术语表
    组件,并且该组件已启用。
  • 网格过滤器组件引用了一个网格Unity 的主要图形基元。网格构成了 3D 世界的大部分内容。Unity 支持三角形或四边形多边形网格。NURBS、NURMS、细分曲面必须转换为多边形。 更多信息
    参见 术语表
  • 网格的顶点数量大于 0。
  • 网格尚未与其他网格组合。
  • 游戏对象具有网格渲染器一个网格组件,它获取网格过滤器中的几何体,并在对象变换组件定义的位置进行渲染。 更多信息
    参见 术语表
    组件,并且该组件已启用。
  • 网格渲染器组件不使用任何材质,且该材质的着色器在 GPU 上运行的程序。 更多信息
    参见 术语表
    未将DisableBatching标记设置为 true。
  • 要一起批处理的网格使用相同的顶点属性。例如,Unity 可以将使用顶点位置、顶点法线和一个 UV 的网格彼此进行批处理,但不能与使用顶点位置、顶点法线、UV0、UV1 和顶点切线的网格进行批处理。

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

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

构建时的静态批处理

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

要在构建时执行静态批处理

  1. 转到编辑 > 项目设置 > 播放器
  2. 其他设置中,启用静态批处理
  3. 在场景视图或层次结构中,选择要批处理的游戏对象并在检查器中查看它。
    提示:可以同时选择多个游戏对象,以启用所有对象的静态批处理。
  4. 在游戏对象的静态编辑器标志中,启用批处理静态

如果满足常见用法信息中描述的条件,Unity 会自动将指定的静态网格批处理到同一个绘制调用中。

The Static Editor Flags checkbox in the Inspector for a GameObject.
游戏对象检查器中的静态编辑器标志复选框。

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

运行时的静态批处理

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

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

静态批处理简介
批处理移动游戏对象