Files
TG_ARPG/Source/TG_ARPG/Private/AsyncLoadingFunctionLibrary.cpp
2023-07-20 01:29:36 +08:00

87 lines
2.1 KiB
C++

// Fill out your copyright notice in the Description page of Project Settings.
#include "AsyncLoadingFunctionLibrary.h"
#include "Components/TimelineComponent.h"
#include "Engine/AssetManager.h"
#include "Engine/StreamableManager.h"
void UAsyncLoadingFunctionLibrary::TenGenAsyncLoad(TSoftObjectPtr<> PageageLoad,FString& LoadPackagePath,
const FOnAsyncLoadFinished& OnAsyncLoadFinished)
{
LoadPackagePath = FPaths::GetBaseFilename(PageageLoad.ToString(), false);
//打印loadpackagepath
// GEngine->AddOnScreenDebugMessage(-1, 20.0f, FColor::Green, LoadPackagePath);
//shu
// 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)
{
UE_LOG(LogTemp, Warning, TEXT("Load Succeeded"));
OnAsyncLoadFinished.ExecuteIfBound(LoadPackagePath);
}
}), 0, PKG_ContainsMap);
}
void UAsyncLoadingFunctionLibrary::AsyncLoadWithStreamableManager(TSoftObjectPtr<UObject> AssetPtr, FString& LoadPackagePath, const FOnAsyncLoadFinished& OnAsyncLoadFinished)
{
LoadPackagePath = FPaths::GetBaseFilename(AssetPtr.ToString(), false);
//异步加载
FStreamableManager& Streamable = UAssetManager::GetStreamableManager();
Streamable.RequestAsyncLoad(AssetPtr.ToSoftObjectPath(), FStreamableDelegate::CreateLambda([=]()
{
OnAsyncLoadFinished.ExecuteIfBound(LoadPackagePath);
}));
}
float UAsyncLoadingFunctionLibrary::GetLoadProgress(FString LoadPackagePath)
{
//取得加载进度,压缩到0-1之间
float FloatPercentage = GetAsyncLoadPercentage(*LoadPackagePath) / 100.0f;
// FString ResultStr = FString::Printf(TEXT("Percentage: %f"), FloatPercentage);
// GEngine->AddOnScreenDebugMessage(-1, 2.0f, FColor::Green, ResultStr);
// UE_LOG(LogTemp, Warning, TEXT("Percentage: %f"), FloatPercentage);
return FloatPercentage;
}