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

此文介绍的也是我用UMG动画实现的一个假的Loading进度条。除了0%和100%的中间过程都是假的。
##GameInstance设置
UE4在执行场景切换的时候,GameMode也是会相应的销毁和新建的,所以我们控制Loading进度的变量不能存在GameMode中,在此我选择在GameInstance中来保存Loading进度的控制变量。新建两个float变量:LoadingPerc和LoadingTime,其中LoadingTime初始值为0.8。
先创建一个widget名为LoadingScreen,两个场景:Battle和Home。然后在GameInstance中写加载LoadingScreen和场景切换的事件。
UE4-利用UMG动画制作场景切换Loading进度条_第1张图片

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

切换到Graph窗口,我们开始写LoadingScreen的动画播放逻辑:
UE4-利用UMG动画制作场景切换Loading进度条_第4张图片

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

##新场景的场景蓝图设置
最后我们来带Battle场景的场景蓝图,添加如下代码:
UE4-利用UMG动画制作场景切换Loading进度条_第5张图片

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

##NOTES

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

你可能感兴趣的:(UE4学习,UE4引擎)