【虚幻UE5教程】进阶篇——关卡流送(Level Streaming)
关卡流送(Level Streaming)功能可以分块式地加载、显示关卡,将场景拆分为较小的地图块,并且只有相关部分才会占用资源并被渲染。在这一节,我们学习关卡流送的基本逻辑与使用方法。使用关卡流送可以优化游戏性能、制作程序化生成地图,让游戏变得更加优秀。UE学习,与君共勉。
【虚幻UE5教程】进阶篇——关卡流送(Level Streaming)
往期目录
本文目录
前言
关卡流送(Level Streaming) 功能可以分块式地加载、显示关卡。将需要的关卡部分加载到内存中并渲染,不需要的关卡部分卸载。这样一来,场景就拆分为较小的地图块,并且只有相关部分才会占用资源并被渲染。
可以使用官方内容示例中 关卡流送(Level_Streaming) 关卡进行学习。
一、关卡
你总是拥有一个 持久关卡(Persistent Level) ,并且可以有一个或多个 子关卡/流送关卡(Stream Level)。
1.1 持久关卡(Persistent Level)
持久关卡 是永久拥有的关卡。你可以把它看作一个主关卡,用来管理加载或卸载其他子关卡。
1.2 流送关卡(Stream Level)
流送关卡 或 子关卡 将游戏整体中的内容拆分为多个,以供多个工作者同时修改或游戏场景动态加载。子关卡可以是 固定加载(Always Loaded) ,也可以通过 关卡流送体积 、 蓝图 或 C++代码 动态加载、卸载或流送。
二、关卡(Levels)面板
使用 关卡(Levels) 面板对关卡进行管理。在主菜单栏的 窗口(Window) 菜单中,点击 关卡(Levels) 打开面板。
2.1 层级面板(Level Hierarchy)
层级面板以列层级展示所有的关卡。
-
当前关卡 用粗体蓝色文本表示,双击其他关卡可以将其切换为当前关卡。
-
点击 眼睛 标志切换该关卡可视性。
-
点击 灯泡 标志切换该关卡关照情景。
-
点击 锁🔒 标志切换该关卡锁定情况。
-
点击 蓝图 标志打开该关卡的关卡蓝图。
-
点击 颜色框 更改关卡颜色。在关卡视口中 视口模式(View Mode) 菜单中,选择 Actor着色(Actor Coloration) > 关卡颜色(Level Color) 即可使关卡中Actor显示相应关卡颜色。
2.2 关卡下拉菜单
点击面板左上角打开 关卡下拉菜单 。
-
默认流送方法(Default Streaming Method) 可以设置关卡默认流送方法。
-
创建关卡(Creat New) 将创建新的子关卡。
-
添加关卡(Add Existing) 将弹出窗口,选择想要添加的关卡资产即可添加为子关卡。
-
用选定Actor创建关卡(Create New with Selected Actors) 将目前选中的所有Actor从其原本关卡中拆分,放入新建关卡中。
-
合并关卡(Merge) 将选定关卡合并到新关卡中,原关卡将删除。
2.3 细节面板(Level Details)
点击细节图标打开细节面板。
-
流送体积(Streaming Volumes) 内指定关卡流送体积,一个关卡可以指定多个流送体积,一个流送体积可以作用于多个关卡。
-
初始加载与可视性(Initially …) 可以设置关卡是否初始就加载/可见。
-
卸载请求间隔(Min Time Between Volume Unload Requests):卸载请求间隔规定了两次卸载请求之间的最少时间间隔。防止玩家在关卡边缘频繁进出,导致关卡频繁加载、卸载。
2.4 上下文菜单
右键某关卡打开 上下文菜单 。
-
删除关卡(Remove Selected):删除选中的子关卡。
-
改变流送方式(Change Streaming Method) 更改此设置。
-
固定加载(Always Loaded):关卡将与持久关卡一同加载,和持久关卡同时变为可见状态。无视指定的流送体积域、蓝图或 C++ 的所有加载/卸载请求。次关卡分段不会流出,除非游戏变更持久关卡。这类关卡分段常用于将持久关卡中的常见内容拆分为多个"层",以便美术师同时协作工作而不会相互阻碍。
-
蓝图(Blueprint):关卡通过 关卡流送体积(Level Streaming Volumes) 、 蓝图 或 C++代码 来动态加载、卸载或流送。
-
-
选择Actor(Select Actors):选中关卡中包含的Actor。
-
将选择移到关卡(Move Selected … to Level):将选中的Actor或植被(Foliage)移动到该关卡中。如果对象已包含在其他关卡中,将会从其他关卡中移除。
-
选中流送体积(Select Streaming Volumes):选中该关卡指定的关卡流送体积。
2.5 面板设置
点击面板右上角 设置 菜单。
-
显示路径(Display Paths):将关卡名显示为关卡路径。
-
显示Actor数(Display Actors Count):在关卡名后显示包含的Actor数。
三、关卡流送
3.1 流送体积(Streaming Volumes)
通过 关卡流送体积域 可轻松控制关卡流送。玩家视点处于体积中时,关卡加载;玩家视点处于体积外时,关卡卸载。如果一个关卡具有任何与之关联的流送体积,则该关卡的其他流送方法将无法正确工作。
基于体积域的关卡流送易于使用、易于修改。调整体积域的大小即可调整关卡加载/卸载行为。所有关卡流送体积都必须存在于 持久关卡 中。
-
通过 体积(Volumes) > 关卡流送体积(Level Streaming Volume) ,即可向关卡中添加流送体积。
-
在 关卡面板 的 关卡细节面板 中绑定流送体积。
-
在细节面板中调整关卡流送体积处理关卡流送的方式。
-
编辑器关卡视口中以框体显示流送体积,在细节面板中修改 缩放(Scale) 属性以更改体积大小。
-
流送关卡(Streaming Levels) 显示受体积影响的关卡。
-
仅限编辑器预可视化(Editor Pre Vis Only) 确定流送体积是否仅用于编辑器流送关卡预可视化。如果仅在编辑器中使用该流送体积,在游戏中使用其他流送方式,可以打开此设置。
-
已禁用(Disabled):如果为真,则忽略流送体积。也用于禁用关卡流送体积而不将其与关卡分离,或者用于在蓝图和流送体积之间切换关卡流送的控制。
-
流送使用(Streaming Usage) 确定体积的用途,例如控制加载、控制加载和可视性、控制可视性且在加载时阻塞主线程。
-
3.2 蓝图
关卡流送的关键函数为 加载流送关卡(Load Stream Level) 和 卸载流送关卡(Unload Stream Level)。
-
使用关卡名称或资产引用指定需要加载/卸载的关卡。
-
加载后可视(Make Visible After Load):设置是否加载后立即可视。
-
阻塞(Should Block on …):在加载/卸载时暂时阻塞主线程,直到加载/卸载完成。
此外,获取流送关卡(Get Streaming Level) 函数可实现更为动态的流送行为。利用它访问实际的关卡流送对象后,即可修改和查询其状态。结合 创建实例(Create Instance) 函数,可以创建关卡分段的副本。 对这些副本应用变换和发送参数,即可生成程序化的世界场景,例如多种房间随机排布的地下城rogue地图。
总结
在这一节,我们学习关卡流送的基本逻辑与使用方法。使用关卡流送可以优化游戏性能、制作程序化生成地图,让游戏变得更加优秀。UE学习,与君共勉。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)