UE4异步加载场景(1)

本文介绍了UE4中一种非流关卡的异步加载场景方法,通过获取蓝图依赖资源的函数接口,封装成工具,将场景依赖的资源路径存储到DataTable,便于异步加载。文章提供了一个小工具的下载,并预告了下篇将分享异步加载场景的代码,适用于UE4.23版本。
摘要由CSDN通过智能技术生成

1
说UE4异步加载场景,首先大家都能想到的就是流关卡(Level Streaming),这也是一种比较常见的异步加载场景的方法,官方提供了比较详细的使用方法大家可以看官方文档。
我们这里不说流关卡(Level Streaming)这种方式,我们用异步加载场景依赖资源的方式来解决异步加载场景的问题。说到异步加载场景依赖资源包,其实官方提供了如何获得蓝图依赖资源的函数接口。我自己只要稍微封装一下做成小工具就可以了。
第一篇呢我们就主要介绍这个工具,我会把工具插件附在文章末尾供大家下载。代码量很少有兴趣的大家可以阅读一下。
这个工具的功能就是把场景依赖的所有资源路径存储到一张DataTable中,这样其实就相当于这个场景的依赖资源路径都有了。后面我们进行异步加载场景时候直接加载DataTable的资源路径即可。
后面一篇我会把我地异步加载场景代码贴给大家。(UE版本4.23)图片已经标注了按钮功能,就是导出当前场景的所有依赖资源,并且还提供了一个根据场景表格,一次行导出多场景的依赖资源,大家配置一下场景表格,点一下表格导出就是根据场景表格导出
图片已经标注了按钮功能,就是导出当前场景的所有依赖资源,并且还提供了一个根据场景表格,一次行导出多场景的依赖资源,大家配置一下场景表格,点一下表格导出就是根据场景表格导出.
我发现资源审核有点慢,因为插件本身代码很少我贴代码出来给大家,下面这个代码就是核心插件代码。

// Fill out your copyright notice in the Description page of Project Settings.


#include "ExpoortJsonSceneEditor.h"
#include "AssetRegistryModule.h"
#include "DesktopPlatform/Public/IDesktopPlatform.h"
#include "SlateApplication.h"
#include "DesktopPlatform/Public/DesktopPlatformModule.h"
#include "FileHelper.h"
#include "FileHelpers.h"
#include "DataConfig.h"
#include "Editor.h"

void UExpoortJsonSceneEditor::RecursiveGetDependencies(const FName& PackageName, TArray<FName>& AllDependencies, bool isFirst)
{
   
	if (!PackageName.IsNone())
	{
   
		FAssetRegistryModule& AssetRegistryModule = FModuleManager::Get().LoadModuleChecked<FAssetRegistryModule>(TEXT("AssetRegistry"));
		TArray<FName> Dependencies;
		AssetRegistryModule.Get().GetDependencies(PackageName, Dependencies);
		if (isFirst &&
			!AllDependencies.Contains(PackageName) &&
			AddToSourceMapCondition(PackageName.ToString()))
		{
   
			AllDependencies.Add(PackageName);
		}

		for (auto DependsIt = Dependencies.CreateConstIterator(); DependsIt; ++DependsIt)
		{
   
			if 
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值