【UE4】异步加载关卡 LoadingScreen ( 蓝图和C++ )
- 一般先跳转到一个临时的关卡,然后异步加载目标关卡,同时展示Loading界面
- 对于含有流关卡的目标关卡,可以先载入子关卡
蓝图异步加载
- 无进度条

C++ 异步加载关卡
LoadPackageAsync
bool bIsLoaded;
UPROPERTY()
FString LoadPackagePath;
// 用于加载完成的回调
DECLARE_DYNAMIC_DELEGATE(FOnAsyncLoadFinished);
UFUNCTION(BlueprintCallable)
void MyAsyncLoad(const FOnAsyncLoadFinished& OnAsyncLoadFinished);
UFUNCTION(BlueprintCallable)
float GetLoadProgress();
//开始异步加载
void ALoadActor::MyAsyncLoad(const FOnAsyncLoadFinished& OnAsyncLoadFinished)
{
//不使用GetBaseFilename,编译 error C4458: LoadPackageAsync failed to begin to load a package···
LoadPackagePath = FPaths::GetBaseFilename(LoadPackageSoftObjectPath.ToString(), false);
bIsLoaded = false;
UE_LOG(LogTemp, Warning, TEXT("String: %s"), *LoadPackagePath);
LoadPackageAsync(
LoadPackagePath,
FLoadPackageAsyncDelegate::CreateLambda([=](const FName& PackageName, UPackage* LoadedPackage, EAsyncLoadingResult::Type Result)
{
if (Result == EAsyncLoadingResult::Failed)
{
UE_LOG(LogTemp, Warning, TEXT("Load Failed"));
}
else if (Result == EAsyncLoadingResult::Succeeded)
{
bIsLoaded = true;
UE_LOG(LogTemp, Warning, TEXT("Load Succeeded"));
OnAsyncLoadFinished.ExecuteIfBound();
}
}), 0, PKG_ContainsMap);
}
//获取加载的进度 -1 —— 100
float ALoadActor::GetLoadProgress()
{
float FloatPercentage = GetAsyncLoadPercentage(*LoadPackagePath);
if (!bIsLoaded)
{
FString ResultStr = FString::Printf(TEXT("Percentage: %f"), FloatPercentage);
GEngine->AddOnScreenDebugMessage(-1, 2.0f, FColor::Green, ResultStr);
UE_LOG(LogTemp, Warning, TEXT("Percentage: %f"), FloatPercentage);
}
else {
FloatPercentage = 100;
}
return FloatPercentage;
}

效果

FStreamableManager
- 获取依赖项
- 将依赖项转为
FSoftObjectPath存储到容器中 - 使用
RequestAsyncLoad加载 - 使用
GetLoadCount获取加载进度
参考部分代码

参考
【UE4】异步加载关卡 LoadingScreen ( 蓝图和C++ )的更多相关文章
- 【UE4 C++ 基础知识】<11>资源的同步加载与异步加载
同步加载 同步加载会造成进程阻塞. FObjectFinder / FClassFinder 在构造函数加载 ConstructorHelpers::FObjectFinder Constructor ...
- 多线程异步加载图片async_pictures
异步加载图片 目标:在表格中异步加载网络图片 目的: 模拟 SDWebImage 基本功能实现 理解 SDWebImage 的底层实现机制 SDWebImage 是非常著名的网络图片处理框架,目前国内 ...
- winform异步加载数据到界面
做一个学习记录. 有两个需求: 1.点击按钮,异步加载数据,不卡顿UI. 2.把获取的数据加载到gridview上面. 对于需求1,2,代码如下: public delegate void ShowD ...
- 【Android】纯代码创建页面布局(含异步加载图片)
开发环境:macOS 10.12 + Android Studio 2.2,MinSDK Android 5.1 先看看总体效果 本示例是基于Fragment进行的,直接上代码: [界面结构] 在 F ...
- 【代码笔记】iOS-实现网络图片的异步加载和缓存
代码: - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. se ...
- 使用jOrgChart插件, 异步加载生成组织架构图
jOrgChart插件是一个用来实现组织结构图的Jquery的插件- 一.特点 1.支持拖拽修改子节点: 2.支持节点缩放展示: 3.方便修改css定义样式: 4.超轻量型: 5.兼容性好,基本支持所 ...
- 向上滚动或者向下滚动分页异步加载数据(Ajax + lazyload)[上拉加载组件]
/**** desc : 分页异步获取列表数据,页面向上滚动时候加载前面页码,向下滚动时加载后面页码 ajaxdata_url ajax异步的URL 如data.php page_val_name a ...
- Android-Universal-Image-Loader 图片异步加载类库的使用
在博客中看到一篇利用组件进行图片异步加载的文章在此作记录 原文:http://blog.csdn.net/vipzjyno1/article/details/23206387 这个图片异步加载并缓存的 ...
- 淘宝购物车页面 智能搜索框Ajax异步加载数据
如果有朋友对本篇文章的一些知识点不了解的话,可以先阅读此篇文章.在这篇文章中,我大概介绍了一下构建淘宝购物车页面需要的基础知识. 这篇文章主要探讨的是智能搜索框Ajax异步加载数据.jQuery的社区 ...
随机推荐
- Selenium系列(十九) - Web UI 自动化基础实战(6)
如果你还想从头学起Selenium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1680176.html 其次,如果你不懂前端基础知识, ...
- 通过cglab 实现 Spring AOP
1新建一个目标类 public class StudentService { public void delete(){ System.out.println("删除学生"); } ...
- openswan中ISAKMP交互过程关键函数接口
1. ISAKMP交互过程中关键函数接口 下面分别说明不同的阶段和模式下的函数接口以及对应的报文. 2. 第一阶段(Phase I)主模式函数接口 发送端 响应端 main_outI1 主模式第一包 ...
- CentOS 安装制定版本docker
# 1) 配置镜像仓库 curl -o /etc/yum.repos.d/Docker-ce-Ali.repo https://mirrors.aliyun.com/docker-ce/linux/c ...
- mysql远程连接以及错误解决&命令行基本操作
现在大家的程序服务基本都是部署在云服务器上,今天我分享记录一下:使用mysql数据库过程中比较常见操作和遇到的问题 环境:lunix 系统(阿里云服务器,华为云服务器,腾讯云等均适用) + mysql ...
- Fastjson反序列化漏洞基础
Fastjson反序列化漏洞基础 FastJson是alibaba的一款开源JSON解析库,可用于将Java对象转换为其JSON表示形式,也可以用于将JSON字符串转换为等效的Java对象. 0x0 ...
- Mybatis简单查询
目录 前言 一.时间区间查询 1.xml中实现 2. Mybatis Plus 方式 二.模糊查询 1.xml中实现 2. Mybatis Plus 方式 前言 好记性不如烂笔头,记录内容,方便日后 ...
- python 直接插入排序
# 先将未排序的元素放到九天之上,一个临时变量temp,上到九天之上去观察前面已经排好的序列, # 然后从后向前对比,只要临时变量小于某个位置的值,就将其向前移动一位,就是给比它下标大 # 1的位置处 ...
- CodeForce-782B The Meeting Place Cannot Be Changed(高精度二分)
https://vjudge.net/problem/CodeForces-782B B. The Meeting Place Cannot Be Changed time limit per tes ...
- 一个完整的SEO优化方案
一个完整的SEO优化方案主要由四个小组组成: 一.前端/页编人员 二.内容编辑人员 三.推广人员 四.数据分析人员 接下来,我们就对这四个小组分配工作. 首先,前端/页编人员主要负责站内优化,主要从四 ...