关卡实例化功能是一种基于关卡的机制,能让普通场景采用世界分区系统。它可以用于使用以下功能来创建复杂的流送策略:

  • 通过特殊设计的Actor,实现在关卡实例化时包含变换信息。

  • 在运行时流送同一关卡的多个实例。在之前版本的虚幻引擎中这是无法实现的。

  • 在一个子关卡中额外嵌套其他子关卡。

例如,你可以使用世界分区系统在地图中生成大量Actor。假如某些Actor需要专门设置和复用,关卡实例还提供了一种能够联系情境的编辑流程,可以取代旧的关卡视图。

尽管你可以在不使用世界分区的情况下使用关卡流送,但离开了世界分区系统中的主场景,关卡实例不会自动实现流送管理或采用任何流送策略。

创建关卡实例

新的关卡实例是根据选中的Actor生成的;它可以在 视口(Viewport) 或 世界大纲视图(World Outliner)中创建。

 

![图像替换文本](image_0.png)(w:500)

 

选中所有的Actor后,右键点击其中一个,打开上下文菜单,然后选择 根据选择进行创建(Create from selection)

你将看到一个对话框,其中包含以下设置:

 

![图像替换文本](image_1.png)(w:500)

 

 

设置 

说明 

类型

关卡实例的类型:

  • 关卡实例

  • 已打包关卡实例

  • 已打包关卡实例蓝图

外部Actor

允许外部Actor使用"一Actor一文件"系统。如需更多信息,请参见One File Per Actor文档。

枢轴点类型

关卡实例将采用的枢轴点类型: 

  • 中心最小值 - Z(Center Min Z):枢轴点将位于关卡实例的中心,并且位于最小的Z值位置。

  • 中心(Center: Pivot):枢轴点将位于关卡实例的中心。

  • Actor:枢轴点将位于指定Actor的中心。

枢轴点Actor

如果Actor被选择作为枢轴点,请使用此下拉菜单来选择哪个Actor将作为关卡实例的枢轴点。

选择设置后,系统将要求你保存新的关卡实例。

此流程将在关卡中创建新的 ALevelInstance Actor,代替之前选中的Actor。此Actor表示刚刚创建的关卡,应用至此Actor的所有变换都将应用至关卡实例。

 

![图像替换文本](image_2.png)(w:800)

 

在 世界大纲视图(World Outliner) 中,关卡Actor将显示为灰色,因为当前无法选择或编辑。

 

![图像替换文本](image_3.png)(w:500)

 

你可以将 ALevelInstance Actor拖动到你的关卡中,并在 细节(Details) 面板中将一个 .umap 文件指定给它。

你可以仿照常规的关卡创建模板,在虚幻引擎的 .ini 文件中创建关卡实例模板。方法是将以下内容添加到项目的 DefaultEditor.ini 文件:

[/Script/LevelInstanceEditor.LevelInstanceEditorSettings]
+TemplateMapInfos=(ThumbnailTexture=Null,Map="/Game/Maps/Tools/TM-Template")

打包型关卡实例

打包型关卡实例(Packed Level Instance)会设法把关卡中的静态网格体尽可能合并成少量的静态网格体实例。 

打包型关卡实例分为两种:

  • 打包型关卡实例(Packed Level Instances):打包流程会在ALevelInstance Actor的位置创建一个打包关卡实例。

  • 打包型关卡实例蓝图(Packed Level Instance Blueprint):打包流程将创建一个可以在蓝图中引用的关卡实例。

Actor和组件若不是静态网格体,将不会包含在打包流程中,而且将在源关卡中保持独立。

打包关卡实例不会更改在使用关卡时的编辑工作流。

打包型关卡实例目前属于验性功能,可能会在虚幻引擎的后续版本中改动或删除。

编辑关卡实例

你可以在具体的上下文中,通过视口(Viewport)或细节面板(Details panel)编辑关卡实例。

 

![图像替换文本](image_4.png)(w:800)

 

如上所示,可以通过以下方式打开编辑模式:

  1. 在视口中选择关卡实例。

  2. 右键点击打开上下文相关菜单。

  3. 在菜单的关卡实例(Level Instance)部分,将鼠标悬停在编辑(Edit)选项上,选择你要编辑的关卡。

此外,还可以从细节面板(Detail Panel)打开编辑模式:

 

![图像替换文本](image_5.png)(w:500)

 

选择你希望编辑的关卡实例,然后在 细节(Details) 面板中点击编辑(Edit)按钮。

在运行时流送关卡

嵌入模式

在使用嵌入模式时,使用了 一Actor一文件系统(One File Per Actor,OFPA) 的关卡实例将会被废弃,它们的Actor将会在运行时添加到世界分区网格。这是默认的运行时模式,也是建议的关卡内容流送方法。这让关卡实例仅在编辑器中存在。

在使用嵌入模式时,一些不使用OFPA的Actor将会在运行时丢失。例如,嵌入的关卡实例的AWorldSettings object在运行时不存在,因为这是非OFPA Actor。 

你应该避免依赖这种方法,或在需要时使用关卡流送模式。

关卡流送模式

不使用OFPA的关卡实例无法嵌入到世界分区系统的网格中,并且会在运行时使用标准的关卡流送。这意味着,ALevelInstance Actor通过自身关联的世界分区运行时单元加载时,它将加载关联的关卡。

此关卡流送的运行时开销很高,因为流中添加了更多的关卡。不建议使用采用此模式来流送大量关卡,因为性能开销会很大。

结合使用嵌入模式和 世界分区数据层功能(World Partition: Data layers),你可以有效估计出能为动态加载关卡预先准备哪些功能。

数据层

在使用嵌入模式或关卡流送模式时,关卡实例支持 世界分区的数据层功能(World Partition: Data layers)。关卡实例中包含的Actor将从ALevelInstance Actor继承数据层。