Version: 6000.3
语言: 中文
批处理静态游戏对象
启用静态批处理

静态批处理简介

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

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

若要对一组游戏对象使用静态批处理,游戏对象必须符合静态批处理的条件。有关如何设置渲染器以便 Unity 可以对渲染器进行批处理的信息,请参阅使用绘制调用批处理

若要对游戏对象使用静态批处理,以下条件必须全部满足:

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

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

静态批处理比动态批处理一种自动 Unity 过程,它尝试将多个网格渲染为单个网格,以优化图形性能。该技术转换 CPU 上的所有游戏对象顶点,并将许多相似的顶点组合在一起。更多信息
请参阅术语表
因为静态批处理不会转换 CPU 上的顶点。有关静态批处理的性能影响的更多信息,请参阅性能影响

要求和兼容性

本节包括有关渲染管线 获取场景内容并将其显示在屏幕上的一系列作。Unity 允许您从预构建的渲染管道中进行选择,或编写自己的渲染管道。更多信息
请参阅术语表
静态批处理的兼容性。

渲染管线兼容性

特征 通用渲染管线(URP) 高清渲染管线 (HDRP) 自定义可编写脚本的渲染管线(SRP) 内置渲染管线
静态批处理 是的 是的 是的 是的

性能影响

使用静态批处理需要额外的 CPU 内存来存储组合的几何体。如果多个游戏对象使用同一个网格,Unity 会为每个游戏对象创建一个网格副本,并将每个副本插入到组合网格中。这意味着相同的几何体在组合网格中多次出现。

无论您是使用编辑器(请参阅在构建时启用静态批处理)还是运行时 API(请参阅在运行时启用静态批处理)来准备游戏对象以进行静态批处理,Unity 都会执行此作。

如果要优先考虑较小的内存占用,则可能需要降低渲染性能并避免对某些游戏对象进行静态批处理。例如,在茂密的森林环境中将树标记为静态可能会对内存产生严重影响。

注意:每个静态批次最多可以包含 64,000 个顶点。如果还有更多,Unity 将创建另一个批次。

批处理静态游戏对象
启用静态批处理