Version: 6000.3
语言: 中文
静态批处理简介
批处理移动的游戏对象

启用静态批处理

Unity 可以执行静态批处理Unity 用于在屏幕上绘制游戏对象的一种技术,用于将静态(非移动)游戏对象组合成大网格,并以更快的方式呈现它们。更多信息
请参阅术语表
在构建时和运行时。作为一般规则,如果游戏对象Unity 场景中的基本对象,可以表示角色、道具、风景、相机、航路点等。游戏对象的功能由附加到它的组件定义。更多信息
请参阅术语表
存在于场景场景包含游戏的环境和菜单。将每个唯一的场景文件视为一个独特的关卡。在每个场景中,你放置你的环境、障碍物和装饰品,基本上是将你的游戏设计和构建成碎片。更多信息
请参阅术语表
在构建应用程序之前,请使用编辑器在构建时对游戏对象进行批处理。如果您在运行时创建游戏对象及其网格,请使用运行时 API

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

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

  • 游戏对象处于活动状态。
  • GameObject 有一个网格体过滤器(Mesh Filter一种网格体组件,用于从资产中获取网格体并将其传递给网格体渲染器(Mesh Renderer) 以在屏幕上渲染。更多信息
    请参阅术语表
    组件,并且该组件已启用。
  • 网格过滤器组件具有对网格Unity 的主要图形原语。网格体构成了 3D 世界的很大一部分。Unity 支持三角或四边形多边形网格。Nurbs、Nurms、Subdiv 曲面必须转换为多边形。更多信息
    请参阅术语表
    .
  • 网格体的顶点计数大于 0。
  • 网格体尚未与另一个网格体组合。
  • GameObject 有一个网格体渲染器(Mesh Renderer一个网格体组件,用于从网格体过滤器中获取几何体,并将其渲染到对象的变换组件定义的位置。更多信息
    请参阅术语表
    组件,并且该组件已启用。
  • 网格体渲染器组件不使用任何材质,并使用着色器在 GPU 上运行的程序。更多信息
    请参阅术语表
    具有DisableBatching标记设置为 true。
  • 要批处理在一起的网格体使用相同的顶点属性。例如,Unity 可以批处理使用顶点位置、顶点法线和一个 UV 的网格,但不能批处理使用顶点位置、顶点法线、UV0、UV1 和顶点切线的网格。

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

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

在生成时启用静态批处理

为了提高渲染性能,你可以在编辑器中的构建时启用静态批处理。

然后,多个静态游戏对象被组合成一个批次,从而减少运行时的绘制调用次数。这在具有许多静态对象的项目中非常有用,例如大型非动态场景。

若要在生成时执行静态批处理,请执行以下作:

  1. 转到 编辑>项目设置(Project Settings) > 播放器。
  2. 其他设置(Other Settings) 中,启用 静态批处理(Static batching) 。
  3. 场景视图:您正在创建的世界的交互式视图。您可以使用场景视图来选择和定位场景、角色、摄像机、灯光和所有其他类型的游戏对象。更多信息
    请参阅术语表
    Hierarchy 窗口中,选择要批处理的游戏对象,以在检查器一个Unity 窗口,显示有关当前选定游戏对象、资产或项目设置的信息,允许您检查和编辑值。更多信息
    请参阅术语表
    窗。 您可以同时选择多个游戏对象,为所有游戏对象启用静态批处理。
  4. 在游戏对象的静态编辑器标志中,启用 Batching Static

有关如何设置渲染器以便 Unity 可以对渲染器进行批处理的信息,请参阅使用绘制调用批处理

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

运行时静态批处理

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

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

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