How do I call uasset that is loaded from memory in Pak? MountPak Successful and SynchronousLoad Successful ,But I don’t know how to call uasset that is loaded from memory in Pak.Please help me. Thank you very much.
Code:`
FString SaveContentDir = FPaths::ProjectContentDir()+ TEXT("Paks/newout.pak");
IPlatformFile& PlatformFile = FPlatformFileManager::Get().GetPlatformFile();
FPakPlatformFile* PakPlatformFile = new FPakPlatformFile();
PakPlatformFile->Initialize(&PlatformFile, TEXT(""));
FPlatformFileManager::Get().SetPlatformFile(*PakPlatformFile);
FPakFile PakFile(&PlatformFile, *SaveContentDir, false);
FString MountPoint("../../../codetest04/Topak/");
PakFile.SetMountPoint(*MountPoint);
if (PakPlatformFile->Mount(*SaveContentDir, 0, *MountPoint))
{
GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Red, TEXT("OnMountPak.Execute Successful.%s" + SaveContentDir));
UE_LOG(YourLog, Warning, TEXT("Mount Success"));
TArray<FString> AssetsToLoad;
TArray<FString> FileList;
PakFile.FindFilesAtPath(FileList, *PakFile.GetMountPoint(), true, false, true);
FStreamableManager StreamableManager;
FString AssetName = FileList[10];
FString AssetShortName = FPackageName::GetShortName(AssetName);
FString LeftStr;
FString RightStr;
AssetShortName.Split(TEXT("."), &LeftStr, &RightStr);
AssetName = TEXT("/Game/Topak/") + LeftStr + TEXT(".") + LeftStr;
FStringAssetReference reference = AssetName;
UObject* LoadObject = StreamableManager.SynchronousLoad(reference);
if (LoadObject != nullptr)
{
UStaticMesh* Obj = Cast<UStaticMesh>(LoadObject);
if (Obj!= nullptr)
{
UE_LOG(YourLog, Warning, TEXT("SynchronousLoad success !!!"))
GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Red, TEXT("SynchronousLoad success !!!" ));
}
else
{
UE_LOG(YourLog, Warning, TEXT("SynchronousLoad failed !!!"))
GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Red, TEXT("SynchronousLoad failed !!!"));
}
}`