UE4-利用UMG动画制作场景切换Loading进度条

来源:互联网 发布:阿里云ftp端口号 编辑:程序博客网 时间:2024/05/16 11:15

首先要说明一点,目前市面上的游戏绝大多数的Loading进度条,除了0%和100%的中间过程都是假的。也就是说中间的加载期间只是播放了一个进度条的动画而已。在UE4中想要实现一个真的Loading进度条也是十分困难的,因为在场景切换的过程中,你是无法得到在前一个场景得到新场景加载相关信息的,据说有国外的大神做了一个插件来实现真的Loading进度条,但是我没有找到。此文介绍的也是我用UMG动画实现的
一个假的Loading进度条。

GameInstance设置

UE4在执行场景切换的时候,GameMode也是会相应的销毁和新建的,所以我们控制Loading进度的变量不能存在GameMode中,在此我选择在GameInstance中来保存Loading进度的控制变量。新建两个float变量:LoadingPerc和LoadingTime,其中LoadingTime初始值为0.8。
先创建一个widget名为LoadingScreen,两个场景:Battle和Home。然后在GameInstance中写加载LoadingScreen和场景切换的事件。
这里写图片描述

UMG制作

现在我们来制作LoadingScreen这个UMG。
在Designer中加入一张图片覆盖整个屏幕,再加入Text和一个Circular Throbber,最下方是一个ProgressBar。
这里写图片描述
接下来在设计窗口最下方添加一个动画名为LoadingAni,添加进度条0进度到0秒的关键帧,0.8进度到1秒的关键帧。
这里写图片描述
如何制作UMG动画可以参考官方文档:
https://docs.unrealengine.com/latest/CHN/Engine/UMG/UserGuide/Animation/index.html

切换到Graph窗口,我们开始写LoadingScreen的动画播放逻辑:
这里写图片描述

此处播放动画LoadingAni的时候,起始点和播放时间就是由GameInstance中定义的两个变量控制的,而且播放之后还会重新set这两个变量的值,上图稍微有点乱=。=

新场景的场景蓝图设置

最后我们来带Battle场景的场景蓝图,添加如下代码:
这里写图片描述

按本例所做,进度条的前80%已经在Openlevel之前播放,此处是用来播放后20%的。至此,假Loading进度条的功能已经全部实现,读者可以在home中通过按键或者点击UMG按钮来触发场景切换,就能看到我们的Loading进度条功能成功实现了。

NOTES

笔者在使用OpenLevel切换场景的时候遇到了一些问题,因为OpenLevel执行时会清视口,所以前面不加delay的话,我们的loadingScreen就无法显示出来。

原创粉丝点击