世界分区 - 数据层

介绍什么是数据层以及如何在你的项目中使用数据层。

Choose your operating system:

Windows

macOS

Linux

数据层(Data Layers)是世界分区系统中的一个子系统,用于将Actor划分到单独的层中。通过加载和卸载数据层,你可以塑造不同的场景效果。

图像替换文本

借助数据层,你可以在关卡编辑器中动态地加载和卸载Actor,以此实现复杂的关卡效果。数据层可以由蓝图控制,并进而驱动游戏逻辑;此外,数据层是世界分区系统中的重要资产流送工具。

数据层将取代虚幻引擎老版本中的层级系统(Layer System)。

借助数据层,你可以在编辑器中将游戏逻辑类元素和场景资产分隔开来。美术师可以单独处理特定元素,不会受到游戏逻辑触发器或游戏对象的干扰。设计师则可以借助数据层的动态加载来实现更为有趣的游戏体验,并让关卡过度更加丰富多变。

将Actor添加到数据层

数据层大纲视图

要查看你的场景中的所有数据层,请打开窗口(Window)菜单并选择数据层(Data Layers)选项。这会打开数据层大纲视图。

图像替换文本

序号

说明

1

在关卡编辑器中切换关卡的可视性。仅当某个Actor所有关联数据层都隐藏时,它才能被隐藏。

2

表示"动态加载(Is Dynamically Loaded)"的状态。动态加载的层将会影响运行时的Actor加载。可以使用蓝图或C++代码激活这些层。

3

切换"编辑器动态加载(Editor Dynamically Loaded)"标记。在关卡编辑器中,如果Actor启用了数据层并且在世界分区中加载了编辑器单元格,将加载Actor。

4

切换此数据层中所有Actor的可见情况

5

决定启动时数据层是否在编辑器中显示。

6

决定是否应该为此数据层中的Actor生成HLOD。仅当启用"动态加载(Is Dynamically Loaded)"时可用。

7

决定启用了"动态加载(Is Dynamically Loaded)"的数据层在运行时加载、卸载还是激活。

8

决定数据层是否影响Actor的运行时加载。

右键点击数据层大纲视图将打开上下文菜单。

图像替换文本

选择

说明

创建空白数据层(Create Empty Data Layer)

新建一个空的数据层

将选定的Actor添加到新数据层(Add Selected Actors to New Data Layer)

创建新数据层并使用选定的Actor填充

将选中的Actor添加到选中的数据层(Add Selected Actors to Selected Data Layer)

将视口中选定的Actor添加到选定的数据层。

从选定数据层移除选定Actor(Remove Selected Actors from Selected Data Layer)

将视口中选定的Actor从选定的数据层中删除。

删除选定的数据层(Delete Selected Data Layer)

删除选定的数据层。这不影响与已删除的数据层关联的Actor。

重命名选定的数据层(Rename Selected Data Layer)

重命名选定的数据层。这不影响与已删除的数据层关联的Actor。

选择数据层中的Actor(Select Actors in Data Layers)

选择与选定数据层关联的所有Actor。

将数据层中的Actor附加到选择(Append Actors in Data Layer to Selection)

将选定数据层中的Actor添加到当前选择。

取消选择数据层中的Actor(Deselect Actors in Data Layer)

将当前选择中的Actor从选定数据层删除。

使所有数据层可见(Make All Data Layers Visible)

切换要在关卡编辑器中可见的所有数据层的可见性。

数据层新建后,有几种方法可以将Actor添加到其中:

  • 使用数据层上下文菜单中的 将选定Actor添加到新数据层(Add Selected Actors to New Data Layer)将选定Actor添加到选定数据层(Add Selected Actors to Selected Data Layer)

  • 将选定Actor从世界大纲视图拖到数据层大纲视图中的选定数据层中。

  • 在Actor的细节(Details)面板的数据层(Data Layers)分段中设置

Actor的细节面板

可以在Actor 细节(Details) 面板的 数据层(Data Layers) 分段将Actor添加到一个或多个数据层中。

图像替换文本

如需在细节(Details)面板中将Actor添加到数据层,请按照下面的步骤操作:

  1. 滚动到 细节(Details) 面板底部,然后打开 数据层(Data Layers) 分段。

    图像替换文本

  2. 然后,点击 + 按钮将一个条目添加到 数据层(Data Layers) 列表。

    图像替换文本

  3. 打开下拉菜单,然后从列表中选择数据层。

    图像替换文本

此外,你还可以将数据层从**数据层大纲视图(Data Layers Outliner) 拖放到 细节(Details)** 面板中的列表。

管理文件

由于遵循了 世界分区(World Partition) 系统的目标——将用户之间的文件冲突降到最低——数据层不再要求用户在进行更改时检出重要文件,例如地图文件或Actor文件。

每个数据层都有一个显示标签以及一个内部唯一的标识符。虚幻引擎将此信息存储在 WorldDataLayer 文件的数据层列表中。这样做具有以下优势:

  • 将数据层指定给某个Actor时,只会影响该Actor的文件。这得益于在 世界分区(World Partition) 中使用 一Actor一文件(One File Per Actor)

  • 重命名数据层仅影响其关联的标签。不需要更新与数据层关联的任何Actor。

  • 删除数据层仅影响 WorldDataLayer 文件。与被删除数据层关联的Actor将被自动清空,不需要修改或保存Actor。

结合数据层与蓝图

蓝图可以用于更改数据层的状态。

在下图中,使用了触发体积来控制数据层的状态。

图像替换文本

在示例中,数据层的状态通过以下方式修改:

  1. 玩家进入或退出触发器区域。

  2. 这将触发 Set Data Layer State 函数节点,该节点会将数据层状态更改为 开始重叠状态(Begin Overlap State)结束重叠状态(End Overlap State)

数据层变量(上图3号)通过一个 Actor数据层(Actor Data Layer) 类型的变量公开。

可以使用数据层的标签而不使用变量来设置数据层的状态。但是,不建议这样操作,因为重命名数据层将更改其标签,并可能破坏蓝图。

转换老版本中的层级系统

将世界场景转换为使用世界分区系统时,上一代层级系统中的层级会被转换为数据层,并且该数据层会禁用 动态加载(Dynamically Loaded)