UE4随笔—— 关卡切换

关卡切换

**
一,实现的目的
在UE4 中有一种场景,需要创建多个关卡,在关卡之间进行切换。 此时可能会用到流关卡切换的的一些功能实现。

首先说一下一些 常用的 蓝图节点:
加载关卡
在这里插入图片描述
卸载关卡
在这里插入图片描述
调用其他关卡里面的功能函数。 这一条蓝图节点非常实用。 但是有一个使用的注意事项:

它只能在关卡蓝图中进行调用。日常的常规蓝图中是无法使用的。一般使用的时候, 前面首先调用一下 load stream leavel , 加载一个关卡, 然后调用下面的指令,调用加载的关卡蓝图中的 功能函数
在这里插入图片描述

以上三个 核心的功能函数 , 配合UMG 实现一个小型的 应用讲解。
应用讲解:
永久性关卡:
FirstPersonExampleMap

附属关卡:
在这里插入图片描述
注意红色箭头部分,可以在当前的永久关卡,直接打开附属关卡的 关卡蓝图, 防止当前的关卡蓝图出现被覆盖掉的情况。

实现的目的:
1,启动游戏之后, 进入第一个关卡这是一个永久性关卡,永远都会存在。 然后直接加载流关卡AnimatedLoadingSplashScreen ,此关卡通过UMG 提示 是这是一个临时的显示关卡。
在这里插入图片描述
1, 从临时显示关卡 过渡到 下一个关卡 LoadingMainMap , 此关卡主要通过UMG 显示loading 的UMG .
在这里插入图片描述
2,LoadingMainMap 关卡, 是一个带有button 的 MainMenuUMG 关卡, 可以通过此关卡 切换到, 任意其他的关卡里面。
在这里插入图片描述

逻辑实现:
1,从永久关卡 切换 到第一个 关卡,只是用来文字演示的关卡逻辑蓝图
在这里插入图片描述
2,从LoadingSplashScreen 关卡蓝图的 功能函数 LoadSplashScreen 实现的逻辑

(1)加载loadingUMG ,显示在画面端
在这里插入图片描述
(2)开始加载下一个 关卡AnimatedLoadingMainMap,延时2s, 然后将loading 的UMG 从当前画面取消,调用AnimatedLoadingMainMap 关卡蓝图的 功能函数LoadMainMenu,同时将当前关卡取消。
在这里插入图片描述
(3)AnimatedLoadingMainMap 是一个核心的关卡。 我们后面的所有关卡的选择都是从本关卡可以进行跳转。
我们将所有的 关卡跳转触发 做成了 button 的触碰。
在这里插入图片描述
这是一个跳转关卡的例子。 注意: 我们提前定义了一个 GameInstance ,里面存储了一个名称类型的变量, 用来存储 需要跳转的关卡的 名字。
MainUMG 页面中, 每一个button 按下时都会对应一个 关卡的名字, 我们需要将 这个名字 存入到 Gameinstance 中的变量中,然后 我们调用 mainmap 的关卡蓝图, 调用其中的接口函数。注意接口函数需要自己创建一个(不需要输入参数。)
在这里插入图片描述
(1)跳转loading 界面, main menu 界面取消, 鼠标不显示,按键或者键盘 的输入对UMG 不会有影响。Yeah, GameOnly means no UI. That also means that UMG won’t register “OnKeyDown” etc.
(2)调用 loadingScreen 关卡蓝图中的 LoadloadingScreen 功能函数。
在这里插入图片描述
(3)Loadingmap 的关卡蓝图的 功能函数 LoadLoadingScreen
在这里插入图片描述
加载loading UMG 并显示。
加载关卡。注意,名字已经存储到 gameinstance 中。
在这里插入图片描述
在这里插入图片描述
每一个需要加载的关卡 ,对应的关卡蓝图 我们都定义了一个 LoadLevel 的功能函数。
以下是 其中的一个Map
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注意:
(1)这些通过button 点击 切换过去的map , 实际上才是我们 真正有场景的map。 一开始的map , 我们一开始都是设置成 空的, 只不过在上面添加了 UMG .
(2) 有场景的 关卡蓝图, 在 playerstart 点, 生成第一人称角色。
(3) 使用“Possess”函数让控制器控制新生成的对象 ,这样鼠标和键盘 就可以控制新生成的角色了。我们使用的是自己的 第一人称射击的角色。
(4)注意蓝图中最后一个 show mouse cursor , 一开始 设置为 true ,在当前map 体验过程中, 射击时会很不流畅。

UE4中,关卡流送(Level Streaming)是一种将大型游戏地图分割成多个子关卡,并在游戏运行时动态加载和卸载这些子关卡的技术。这样可以减少游戏的内存占用和加载时间,提高游戏性能。下面是一种实现关卡流送的方法: 1. 创建子关卡:将大型地图分割成多个子关卡。可以使用UE4的Level Editor工具来创建和编辑这些子关卡。 2. 设置关卡属性:在每个子关卡的属性面板中,找到Streaming Options部分。将"Level Streaming"选项设置为"Enabled",并指定子关卡的LOD(Level of Detail)。 3. 创建关卡流送卷轴:在主关卡中创建一个触发器(Trigger Volume)或者是一个特定的Actor,作为触发加载或卸载子关卡的触发器。可以使用蓝图或者代码来实现触发器的功能。 4. 实现触发器功能:在触发器的蓝图或代码中,通过调用Level Streaming函数来加载或卸载子关卡。可以使用函数如Load Stream Level和Unload Stream Level来实现。 5. 控制加载和卸载:根据游戏的需求和设计,决定何时加载和卸载子关卡。可以在玩家进入或离开触发器区域时触发加载或卸载子关卡。 6. 进行测试和优化:在进行关卡流送功能的实现后,进行测试并对性能进行优化。可以根据游戏的需求和硬件平台,调整子关卡的LOD和加载方式,以获得最佳的游戏性能和体验。 以上是一种基本的关卡流送实现方法。根据具体的游戏需求,还可以进一步扩展和优化关卡流送功能。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值