Version: 6000.3
语言: 中文
使用遮挡剔除排除隐藏对象
设置遮挡剔除的场景

遮挡剔除

遮挡剔除是一个阻止 Unity 执行渲染计算的过程游戏对象Unity 场景中的基本对象,可以表示角色、道具、风景、相机、航路点等。游戏对象的功能由附加到它的组件定义。更多信息
请参阅术语表
被其他游戏对象完全隐藏(遮挡)的视图。

每一帧,摄像机用于在场景中创建特定视点图像的组件。输出要么绘制到屏幕上,要么作为纹理捕获。更多信息
请参阅术语表
执行剔除作,以检查场景场景包含游戏的环境和菜单。将每个唯一的场景文件视为一个独特的关卡。在每个场景中,你放置你的环境、障碍物和装饰品,基本上是将你的游戏设计和构建成碎片。更多信息
请参阅术语表
并排除(剔除)那些不需要绘制的。默认情况下,摄像机执行视锥体剔除,这会排除所有不属于摄像机视锥体的渲染器。但是,视锥体剔除不会检查渲染器是否被其他游戏对象遮挡,因此 Unity 仍会将 CPU 和 GPU 时间浪费在渲染器上,这些渲染器在最终帧中不可见。遮挡剔除会阻止 Unity 执行这些浪费的作。

常规视锥体剔除会渲染摄像机视图中的所有渲染器。
常规视锥体剔除会渲染摄像机视图中的所有渲染器。
遮挡剔除会删除被较近的渲染器完全遮挡的渲染器。
遮挡剔除会删除被较近的渲染器完全遮挡的渲染器。

何时使用遮挡剔除

要确定遮挡剔除是否可能提高项目的运行时性能,请考虑以下事项:

  • 防止浪费渲染作可以节省 CPU 和 GPU 时间。Unity 的内置遮挡剔除在 CPU 上执行运行时计算,这可以抵消它节省的 CPU 时间。因此,当项目因过度绘制而受GPU限制时,遮挡剔除最有可能导致性能改进。
  • Unity 在运行时将遮挡剔除数据加载到内存中。您必须确保有足够的内存来加载此数据。
  • 遮挡剔除在小的、定义明确的区域由实体游戏对象清晰地彼此分隔的场景中效果最佳。一个常见的例子是通过走廊连接的房间。
  • 您可以使用遮挡剔除来遮挡动态游戏对象,但动态游戏对象无法遮挡其他游戏对象。如果你的项目在运行时生成场景几何体,那么 Unity 的内置遮挡剔除不适合你的项目。

遮挡剔除的工作原理

遮挡剔除在 Unity 编辑器中生成有关场景的数据,然后在运行时使用该数据来确定摄像机可以看到的内容。生成数据的过程称为烘焙。

当您烘焙遮挡剔除数据时,Unity 会将场景划分为多个单元格,并生成描述单元内几何体以及相邻单元之间的可见性的数据。然后,Unity 会尽可能合并单元格,以减小生成数据的大小。要配置烘焙过程,你可以在 遮挡剔除(Occlusion Culling) 窗口中更改参数,并在场景中使用 遮挡区域(Occlusion Areas)。

在运行时,Unity 将此烘焙数据加载到内存中,对于每个启用了 Occlusion Culling 属性的摄像机,它会对数据执行查询,以确定该摄像机可以看到的内容。请注意,启用遮挡剔除后,摄像机会同时执行视锥体剔除和遮挡剔除。

使用遮挡剔除排除隐藏对象
设置遮挡剔除的场景