这是我第一次接触有关关卡的知识。之前学习项目或者看B站虚幻教程,都只有一个关卡,进入游戏,就加载了全部的游戏内容。我一直苦恼于怎么让角色从一个旧场景进入一个新场景,或者让角色不要一开始就看到整个游戏世界。原本以为关卡的切换需要学习很复杂的知识,没想到虚幻官方文档其实讲解的非常详细易懂,我今晚赶紧把学习心得记录下来。

关卡分为固定关卡和流送关卡。
固定关卡或者说主关卡,是我们需要创建的第一个地图,通常也是我们默认打开的地图。如果我们只有一个地图,那这个地图就是我们的固定关卡,在4.26版本叫做持久关卡。

可以在项目设置-地图中设置默认地图
流送关卡分为固定加载关卡和基于体积域或者基于蓝图、C++的流送关卡。
固定加载关卡顾名思义,就是会一直加载的关卡。通常用于对关卡的不同内容进行分类,比如,第三人称模板中有地板、墙壁、台阶、灯光等,原本都是放在同一个默认地图里。现在我们可以将这些分别都放入独立的关卡中,如果项目中有人员分工,每个成员可以负责不同的关卡。一个人的项目也很有用,可以随时切换某个关卡的可视性。比如说,可以做两个墙壁关卡,对比两个关卡哪个更好,保留更好的关卡,方便迭代。

新建关卡

修改流送方法。由于是蓝图项目,所以没有显示C++加载

官方文档对固定加载关卡的说明

基于体积域的流送关卡,就是玩家视点(一般是吸附在玩家身上的相机位置)触碰到放置的关卡流送体积,就会加载的关卡。玩家视点离开流送体积,流送关卡就会自动卸载。

基于体积域的流送关卡,不需要编写蓝图或者C++代码,就可以轻松实现关卡的加载和卸载。

在永久性关卡添加流送体积,注意考虑角色和相机之间的距离。

打开关卡的详细信息面板

关卡绑定对应的流送体积

设置流送体积的细节
经过上面几个简单步骤,就可以实现基于体积域流送关卡,


关卡蓝图配合设置流送体积是否启用,可以为是否加载卸载关卡增加条件
也可以用蓝图或者C++流送关卡。在关卡中放入一个有碰撞盒子的Actor,一旦玩家碰触到,就执行相关逻辑,符合条件就调用Load_Stream_Level函数,载入关卡。Unload_Stream_Level函数可以卸载关卡。
