设置多个场景进行遮挡剔除
在运行时,无论打开了多少个场景,Unity 一次仅加载一个遮挡剔除数据资产。因此,必须根据计划是一次加载一个场景还是一次加载多个场景,从而以不同方式准备遮挡剔除数据。
次加载一个场景
如果使用 LoadSceneMode.Single 一次加载一个场景,则必须分别按以下方式烘焙每个场景的遮挡剔除数据:
- 在 Unity 编辑器中,打开需要烘焙遮挡剔除数据的单个场景。
- 烘焙场景的数据。Unity 会生成数据并将其保存为 Assets/[场景名称]/OcclusionCullingData.asset。Unity 将对此资产的引用添加到打开的场景中。
- 保存场景。
- 对每个场景重复步骤 1、2 和 3。
在运行时,按以下方式加载场景:
- 将场景加载为项目的默认场景,或使用 LoadSceneMode.Single。Unity 会卸载活动场景(如果有)及其遮挡数据资产(如果有)。然后,Unity 会加载场景及其遮挡数据资产。
次加载多个场景
如果使用 LoadSceneMode.Additive 一次加载多个场景,则必须按以下方式一起烘焙这些场景的数据:
- 在 Unity 编辑器中,打开 Unity 将在运行时加载的场景组的第一个场景。该场景将变为活动场景。
- 以累加方式打开组中的其他场景,使所有这些场景同时在 Unity 编辑器中打开。
- 烘焙所有场景的数据。Unity 会为所有打开的场景生成数据,并将其保存为 Assets/[活动场景名称]/OcclusionCullingData.asset。Unity 会向所有打开的场景添加对此资产的引用。
- 保存场景。
在运行时,按以下方式加载场景:
- 将场景组的第一个场景加载为项目的默认场景,或使用
LoadSceneMode.Single。Unity 会卸载活动场景(如果有)及其遮挡数据资产(如果有)。然后,Unity 将加载场景以及共享遮挡数据资产。
- 根据需要,使用
LoadSceneMode.Additive 加载其他场景。如果 Unity 发现以累加方式加载的场景的遮挡数据与活动场景的遮挡数据相同,则遮挡剔除将按预期工作。
请注意,共享的遮挡数据资产的文件较大。使用较大的遮挡数据资产不会在运行时对 CPU 产生任何其他影响。
有关在 Unity 编辑器中使用多个场景的更多信息,请参阅多场景编辑的相关文档。