UE4 实现真加载Loading Screen/movie player
Setup
首先需要一个自定义的GameInstance;
GameInstance是引擎第一批初始化的对象之一,并且持续整个游戏会话;
- 创建一个UGameInstance class,这里命名为MyGameInstance
- 在Project Setting中,找到GameInstance,点+号,创建一个GameInstance Blueprint,然后设置父类为刚建GameInstance;
Movie Player Module
MoviePlayer模块可以与游戏引擎进行对话,并在完成任务时告知游戏引擎,从而使引擎继续运行。
MoviePlayer在其自己的线程中运行,这意味着它可以在引擎停止等待文件加载的同时运行。 另外,因为它在后台线程中,所以您必须使用Slate小部件,而不是较新的UMG小部件。
为了使用Movie Player模块,我们必须将其包含在我们的项目中。 打开游戏的 Build.CS 文件,然后添加MoviePlayer模块,如下所示:
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "MoviePlayer" });
code
回到之前创建的GameInstance class
MyGameInstance.h
public:UMyGameInstance();void BeginLoadMap(const FString& MapName);void EndLoadMap(UWorld* LoadedWorld);UPROPERTY()UUserWidget* CurrentWidget;// loading widgetUPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "UMGGame")TSubclassOf<UUserWidget> LoadingWidget;
};
MyGameInstance.cpp主要代码
FLoadingScreenAttributes
https://docs.unrealengine.com/en-US/API/Runtime/MoviePlayer/FLoadingScreenAttributes/index.html
// Fill out your copyright notice in the Description page of Project Settings.#include "MyGameInstance.h"
//#include "Runtime/MoviePlayer/Public/MoviePlayer.h"
#include "MoviePlayer.h"...void UMyGameInstance::Init()
{Super::Init();UE_LOG(LogTemp, Warning, TEXT("---INIT----"));//PreLoadMap,开始加载mapFCoreUObjectDelegates::PreLoadMap.AddUObject(this, &UMyGameInstance::BeginLoadMap);//PostLoadMapWithWorld, 加载完成后FCoreUObjectDelegates::PostLoadMapWithWorld.AddUObject(this, &UMyGameInstance::EndLoadMap);
}void UMyGameInstance::BeginLoadMap(const FString& MapName)
{//if (IsRunningDedicatedServer())//{// return;
// }FLoadingScreenAttributes LoadingScreen;LoadingScreen.bAutoCompleteWhenLoadingCompletes = false;LoadingScreen.bWaitForManualStop = false; LoadingScreen.bMoviesAreSkippable = false;LoadingScreen.MinimumLoadingScreenDisplayTime = 1.5f; // movie最少播放时间LoadingScreen.WidgetLoadingScreen = FLoadingScreenAttributes::NewTestLoadingScreenWidget(); // movie不存在时,显示的widgetif (LoadingWidget != nullptr){CurrentWidget = CreateWidget<UUserWidget>(this, LoadingWidget);TSharedPtr<SWidget> LoadScreen = CurrentWidget->TakeWidget();LoadingScreen.WidgetLoadingScreen = LoadScreen;}else{UE_LOG(LogTemp, Warning, TEXT("LoadingWidget == nullptr"));}GetMoviePlayer()->SetupLoadingScreen(LoadingScreen);}void UMyGameInstance::EndLoadMap(UWorld* LoadedWorld)
{UE_LOG(LogTemp, Warning, TEXT("end load map"));
}...
打开MyGameInstance_BP ,设置做好的Widget
然后需要点击Launch或Package后才会看到效果
UE4 实现真加载Loading Screen/movie player相关推荐
- React Native封装Toast与加载Loading组件
React Native开发封装Toast与加载Loading组件 在App开发中,我们避免不了使用的两个组件,一个Toast,一个网络加载Loading,在RN开发中,也是一样,React Nati ...
- 安卓设置菊花动画_Android仿ios加载loading菊花图效果
项目中经常会用到加载数据的loading显示图,除了设计根据app自身设计的动画loading,一般用的比较多的是仿照ios 的菊花加载loading 图,当然一些条件下还会涉及到加载成功/ 失败情况 ...
- [Swift通天遁地]五、高级扩展-(11)图像加载Loading动画效果的自定义和缓存
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...
- php ajax loading图片居中显示,PHP语言入门之PHP+ajax实现登录按钮加载loading效果
本篇教程探讨了PHP语言入门之PHP+ajax实现登录按钮加载loading效果,希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入. < php+ajax实现登录按钮加载loa ...
- Android 仿微信小程序开屏页加载loading
Android 仿微信小程序开屏页加载loading 废话不多说,先上效果图~ 首先就是底层有一个灰色的圆,然后按照圆形的轨迹进行绘制. 啊~说那么多也没用,还是直接上代码吧,哈哈哈哈 绘制底部圆形及 ...
- 创意svg加载loading小猫动画
下载地址 svg实现的创意加载loading特效,小猫推logo的动画特效. dd:
- jsp预加载转圈_30种CSS3炫酷页面预加载loading动画特效(推荐)
这是一组效果非常炫酷的CSS3页面预加载loading动画特效.该特效共有30种不同的loading效果.所有的加载动画都是使用CSS3来完成,jQuery代码只是用于隐藏加载动画.当你点击页面的任何 ...
- Android 花里胡哨的加载Loading动画
记录查找了一些实用的加载动画,真的是花里胡哨!!! 1. AVLoadingIndicatorView-master AVLoadingIndicatorView各种加载效果,适合做加载loading ...
- 页面预加载loading动画,再载入内容
默认情况下如果网站请求速度慢,所以会有一段时间的空白页面等等,用户体验效果不好,见到很多的页面都有预加载的效果,加载之前先加载一个动画,后台进程继续加载页面内容,当页面内容加载完之后再退出动画显示内容 ...
最新文章
- DokiCam 360°4K相机:为极致运动爱好者而生
- haproxy负载均衡_做负载均衡Nginx、HAProxy和LVS总有一个适合你
- c语言 文件f指针,C语言文件选择题
- 2012 安装mysql 5.6_如何安装mysql server 5.6
- FPGA设计技巧总结
- 极大似然法(ML)与最大期望法(EM)
- 主板电源开关接口图解_图解:主板电线接法(电源开关、重启等)
- 计算机课程 图层关系认识 课件,全国“xx杯”计算机类说课大赛课件一等奖作品:图层蒙版说课课件...
- 在ie6下实现position-fixed的效果
- element-ui tree全部展开和全部折叠
- 服务器2016安装系统教材,Windows Server 2016 正式版安装教程
- 如何在PPT中插入Visio文件
- 用R建立岭回归和lasso回归
- 【XML系列】----DTD中的元素定义
- 【IDEA用法】IDEA新建文件自动加入SVN,删除文件自动从SVN中删除
- 东哥java学习第二天---Java基础
- spring事务 调用同类方法,同类方法要事务不生效怎么办
- Hibernate - 对象关系映射文件(*.hbm.xml)详解
- SpringBoot自动装配原理浅析
- IMAX探索VR产业,欲再造电影业传奇!