版本:Unity 6 (6000.0)
语言:English
使用遮挡剔除排除隐藏对象
为遮挡剔除设置场景

遮挡剔除

遮挡剔除是一个过程,它可以阻止 Unity 对完全隐藏在其他 游戏对象Unity 场景中的基本对象,可以表示角色、道具、场景、摄像机、路径点等。游戏对象的功 能由附加在其上的组件定义。 更多信息
参见 术语表
后面的 (遮挡被其他物体阻挡,无法看见。) 游戏对象Unity 场景中的基本对象,可以表示角色、道具、场景、摄像机、路径点等。游戏对象的功 能由附加在其上的组件定义。 更多信息
参见 术语表
执行渲染计算。

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

Regular frustum culling renders all Renderers within the Cameras view.
常规视锥剔除会渲染摄像机视野内的所有渲染器。
Occlusion culling removes Renderers that are entirely obscured by nearer Renderers.
遮挡剔除会移除完全被较近渲染器遮挡的渲染器。

何时使用遮挡剔除

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

  • 防止浪费渲染操作可以节省 CPU 和 GPU 时间。Unity 的内置遮挡剔除在 CPU 上执行运行时计算,这可能会抵消其节省的 CPU 时间。因此,当项目由于过度绘制而受 GPU 限制时,遮挡剔除最有可能导致性能提升。
  • Unity 在运行时将遮挡剔除数据加载到内存中。必须确保有足够的内存来加载这些数据。
  • 遮挡剔除在场景中效果最佳,在这些场景中,小型、明确定义的区域被实体 游戏对象Unity 场景中的基本对象,可以表示角色、道具、场景、摄像机、路径点等。游戏对象的功 能由附加在其上的组件定义。 更多信息
    参见 术语表
    清晰地隔开。一个常见的例子是通过走廊连接的房间。
  • 可以使用遮挡剔除来遮挡动态 游戏对象Unity 场景中的基本对象,可以表示角色、道具、场景、摄像机、路径点等。游戏对象的功 能由附加在其上的组件定义。 更多信息
    参见 术语表
    ,但动态 游戏对象Unity 场景中的基本对象,可以表示角色、道具、场景、摄像机、路径点等。游戏对象的功 能由附加在其上的组件定义。 更多信息
    参见 术语表
    不能遮挡其他 游戏对象Unity 场景中的基本对象,可以表示角色、道具、场景、摄像机、路径点等。游戏对象的功 能由附加在其上的组件定义。 更多信息
    参见 术语表
    。如果项目在运行时生成场景几何体,则 Unity 的内置遮挡剔除不适合该项目。

遮挡剔除的工作原理

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

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

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

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