【快捷上手】UnrealEngine 的 关卡流 LevelStreaming 的三种加载方式

关键词:

Unreal Engine,UE, LevelStreaming,动态,关卡,加载,切换关卡,换地图,子地图,子场景,子关卡,分包加载,动态载入

背景:

游戏中要选地图,如王者荣耀,往往是在大厅中先选玩法顺带一张地图,启动游戏后跳转场景。
这类游戏很多,如20多年前的游戏 红色警戒,反恐精英。
但反恐精英还有一个特别的方法,在当前游戏关卡中直接换关卡。
没错,猜测这是一种“父级关卡不变,动态加/卸载子关卡的技术。”
还有一种卡马克卷轴技术的边走边加载子关卡的技术。

问题:

那么综上 UE引擎将不同游戏场景放在子级中。LevelStreaming如何切换? 有几种方法? 分别什么特点?

答:

三种

方法1

在这里插入图片描述

方法1 的具体实现

请添加图片描述SwitchLevels是一个多播事件,它的上级由一个RunOnServer事件触发
LoadAndUnLoadSubLevel 是一个对外接口,主要是用来本地刷新子关卡,防止跟服务器不同步
此处用了一个String类型变量CurrentLevelName 记录当前关卡的名字,因为在LoadAndUnLoadSubLevel时,不必传入关卡名
而用一个LevelStreaming类型变量CurrentSubLevel 记录当前关卡(指针)
注意: 此处必须有 bShouldBeLoaded 的两次设置,否则加载出错
如果已经有同名子关卡在了,先关闭bShouldBeLoaded,再加载,最后在开启bShouldBeLoaded

方法2

在这里插入图片描述

方法3

在这里插入图片描述
如果制作单一子关卡的加载打开,用方法1。诸如赛车游戏,进入游戏主管卡后,玩家切换地图,可以使用方法1。

如果制作超大世界的多地块加载,使用方法2。因为方法2将所有子关卡都预先添加到Level列表中,再开启显示。视觉效果延迟小。
同时使用Level Streaming Volume体积块触发Load和Unload。
在这里插入图片描述
此外,超大世界的多地块加载也可以先用方法1提前将子关卡加载到Level列表,然后用方法2显示出来。

题外话 还可以用 Open Level 或 命令行 换主关卡

注意:这是换主关卡的方法,并不能帮我们换子关卡。
如下案例:我有一个MyGameLevel的关卡
我要加载它
请添加图片描述
以下三种方式均可,推荐用Open Level by Name 和 Open Level by Object Reference
请添加图片描述

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值