Language:
Page Info
Engine Version:
Share
此中文页面内容对应的英文页面有后续更新,如需浏览最新文档可切换至英文页面浏览。

关卡流送总览

流关卡的功能使得在游戏过程中加载或卸载关卡成为可能,并能控制关卡是否可见。这样便能将整个游戏世界分拆成一个个小的区块,在特定时刻,只有那些相关的区块才需要占据资源,并得到渲染显示。 如果制作的恰当,能够做到一个非常大的,无缝的管卡之间的切换,这能使玩家觉得仿佛置身在一个庞大的世界中。

固定关卡

实现关卡无缝混合的第一步是创建固定关卡。它可被视为一个主关卡,主要用于管理哪些关卡将流进和流出。

流送关卡

流送关卡通过 Levels 窗口 进行管理。它可与固定关卡重叠,或偏移创建更大的世界场景。使用流送关卡的流送类型可设为 Always LoadedBlueprint。右键单击关卡分段即可在 Levels 窗口中开启此设置。

流送关卡被设为 Always Loaded,它将与固定关卡一同加载。也将和固定关卡同时变为可见状态。它将无视指定的流送体积域,以及来自蓝图或 C++ 的所有加载/卸载请求。这类关卡分段常用于将固定关卡中的常见内容拆分为多个“层”,以便美术师同时协作工作而不会相互阻碍。如需了解此工作流程的更多内容,请查阅 通过关卡分段进行协作 。游戏中,设为 Always Loaded 的关卡分段不会流出,除非游戏变更固定关卡。

Persistent Level Alone

After Streaming In Levels

动态流送方法

Blueprint 流送类型的流送关卡实际上会受到关卡流送体积域、蓝图或 C++ 代码的控制。这些关卡可被动态加载或卸载。

关卡流送体积域

通过 关卡流送体积域 可轻松控制关卡流送。原理十分简单:流送关卡的加载/卸载请求基于视点是否处于关卡相关的关卡流送体积域中而发出。

具体而言,关卡流送体积域可以两种方式使用:

  • 游戏 中,玩家视点处于体积域中时,关卡流送体积域将使关卡加载;玩家视点处于体积域外时,关卡将卸载。

  • 编辑器 中,关卡流送体积域可基于透视视口摄像机的位置自动隐藏/取消隐藏关卡,用于预览关卡流送。

基于体积域的关卡流送易于使用,不要求脚本编写,是控制关卡流送的理想方式。此外,基于体积域的关卡流送和基于脚本的流送相比更易于维护:加载系统的需求发生变化时,调整体积域的大小即可对关卡加载/卸载行为进行修改。

基于脚本的关卡流送

如需设置更复杂的关卡载入和卸载行为(与上例中的门解锁相似),也可设置关卡载入和卸载的蓝图或 C++ 逻辑。关键函数为 Load Stream LevelUnload Stream Level,并指定关卡按命名加载。

Load Stream LevelUnload Stream Level 之外,Get Streaming Level 函数可实现更为动态的流送行为。利用它访问实际的关卡流送对象后,即可修改和查询其状态。结合 Create Instance 使用此函数,也可创建并流入特定关卡分段的副本。对这些副本应用变形和发送参数,即可创建程序化的世界场景。