I have created a new map and packaged it in pak
Load this pak, the code and log are as follows
void AMyPakLoader::TestLoadPak(FString InPakFullPath) {
FPlatformFileManager::Get().SetPlatformFile(*PakPlatform.Get());
FString PakFileFullPath = InPakFullPath;
FPakFile* TmpPak = new FPakFile(PakPlatform.Get() ,*PakFileFullPath, false);
if (!TmpPak->IsValid()) {
UE_LOG(LogTemp, Error, TEXT("Pak error!Pak addres:%s"), *InPakFullPath);
return;
}
FString PakMountPoint = TmpPak->GetMountPoint();
int32 Pos = PakMountPoint.Find("Content/");
FString NewMountPoint = PakMountPoint.RightChop(Pos);
NewMountPoint = FPaths::ProjectDir() + NewMountPoint;
TmpPak->SetMountPoint(*NewMountPoint);
UE_LOG(LogTemp, Warning, TEXT("PakMountPoint: %s NewMountPoint: %s"),*PakMountPoint,*NewMountPoint);
if (PakPlatform->Mount(*PakFileFullPath, 1, *NewMountPoint))
{
TArray<FString> FoundFilenames;
//TmpPak->GetPrunedFilenames(FoundFilenames);
TmpPak->FindPrunedFilesAtPath(FoundFilenames, *NewMountPoint, true, false, true);
if (FoundFilenames.Num() > 0)
{
for (FString& Filename : FoundFilenames)
{
if (Filename.EndsWith(TEXT(".umap")))
{
FString NewFileName = Filename;
NewFileName.RemoveFromEnd(TEXT(".umap"));
int32 Pos1 = NewFileName.Find("/Content/");
NewFileName = NewFileName.RightChop(Pos1 + 8);
NewFileName = "/Game" + NewFileName;
UE_LOG(LogTemp, Warning, TEXT("load map %s"),*NewFileName);
UObject* LoadedObj = StaticLoadObject(UObject::StaticClass(), NULL, *NewFileName);
if (LoadedObj) {
UE_LOG(LogTemp, Warning, TEXT("map ok"));
}
else
{
UE_LOG(LogTemp, Error, TEXT("map error"));
}
}
}
}
}
FPlatformFileManager::Get().SetPlatformFile(*OldPlatform);
}
How to load the tt map