Version: 2023.1
对动态游戏对象使用遮挡剔除
遮挡区域

遮挡剔除和场景加载

在运行时,无论打开了多少个场景,Unity 一次仅加载一个遮挡剔除数据资源。因此,必须根据计划是一次加载一个场景还是一次加载多个场景,从而以不同方式准备遮挡剔除数据。

一次加载一个场景

如果使用 LoadSceneMode.Single 一次加载一个场景,则必须分别按以下方式烘焙每个场景的遮挡剔除数据:

  1. 在 Unity Editor 中,打开需要烘焙遮挡剔除数据的单个场景。
  2. 烘焙场景的数据。Unity 会生成数据并将保存为 Assets/[场景名称]/OcclusionCullingData.asset。Unity 会将对此资源的引用添加到打开的场景中。
  3. 保存场景。
  4. 对每个场景重复步骤 1、2 和 3。

在运行时,按以下方式加载场景:

  1. 将场景加载为项目的默认场景,或者使用 LoadSceneMode.Single 来加载场景。如果有活动场景,则 Unity 会卸载活动场景以及活动场景的遮挡数据资源(如果有)。Unity 随后加载您的场景及其遮挡数据资源。

一次加载多个场景

如果使用 LoadSceneMode.Additive 一次加载多个场景,则必须按以下方式一起烘焙这些场景的数据:

  1. 在 Unity Editor 中,打开 Unity 将在运行时加载的场景组的第一个场景。该场景将变为活动场景。
  2. 以累加方式打开组中的其他场景,使所有这些场景同时在 Unity Editor 中打开。
  3. 烘焙所有场景的数据。Unity 会生成所有打开的场景的数据,并将其保存为 Assets/[活动场景名称]/OcclusionCullingData.asset。Unity 会将对此资源的引用添加到所有打开的场景中。
  4. 保存场景。

在运行时,按以下方式加载场景:

  1. 加载场景组的第一个场景作为项目的默认场景,或使用 LoadSceneMode.Single 来加载场景。如果有活动场景,则 Unity 会卸载活动场景以及活动场景的遮挡数据资源(如果有)。Unity 随后加载您的场景以及共享的遮挡数据资源。
  2. 根据需要,使用 LoadSceneMode.Additive 加载其他场景。如果 Unity 发现以累加方式加载的场景的遮挡数据与活动场景的遮挡数据相同,则遮挡剔除将按预期工作。

请注意,共享的遮挡数据资源的文件较大。使用较大的遮挡数据资源不会在运行时对 CPU 产生任何其他影响。

有关在 Unity Editor 中使用多个场景的更多信息,请参阅多场景编辑的相关文档。

对动态游戏对象使用遮挡剔除
遮挡区域