1.Call Funtion :
COREUOBJECT_API int32 LoadPackageAsync(const FString& InName, FLoadPackageAsyncDelegate InCompletionDelegate, TAsyncLoadPriority InPackagePriority = 0, EPackageFlags InPackageFlags = PKG_None, int32 InPIEInstanceID = INDEX_NONE);
InName is a map asset.for example InName = “Maps/TestMap”
2.Call the function GetAsyncLoadPercentage(InName) before the asset loading is completed.
It was functioning properly from 4.27 to 5.4, but from 5.5 to 5.6 it would only return -1.
5.5 and 5.6it will call:
float FAsyncLoadingThread2::GetAsyncLoadPercentage(const FName& PackageName)
{
float LoadPercentage = -1.0f;
/*
FAsyncPackage2* Package = FindAsyncPackage(PackageName);
if (Package)
{
LoadPercentage = Package->GetLoadPercentage();
}
*/
return LoadPercentage;
}
It was invoked from 4.27 to 5.4 as follows:
loat FAsyncLoadingThread::GetAsyncLoadPercentage(const FName& PackageName)
{
float LoadPercentage = -1.0f;
{
#if THREADSAFE_UOBJECTS
FScopeLock LockAsyncPackages(&AsyncPackagesCritical);
#endif
FAsyncPackage* Package = AsyncPackageNameLookup.FindRef(PackageName);
if (Package)
{
LoadPercentage = Package->GetLoadPercentage();
}
}
if (LoadPercentage < 0.0f)
{
#if THREADSAFE_UOBJECTS
FScopeLock LockLoadedPackages(&LoadedPackagesCritical);
#endif
FAsyncPackage* Package = LoadedPackagesNameLookup.FindRef(PackageName);
if (Package)
{
LoadPercentage = Package->GetLoadPercentage();
}
}
if (LoadPercentage < 0.0f)
{
checkSlow(IsInGameThread());
FAsyncPackage* Package = LoadedPackagesToProcessNameLookup.FindRef(PackageName);
if (Package)
{
LoadPercentage = Package->GetLoadPercentage();
}
}
return LoadPercentage;
}