B站教學(xué)鏈接:https://space.bilibili.com/449549424?spm_id_from=333.1007.0.0
一、首先設(shè)置UE4引擎的系統(tǒng)環(huán)境變量
?找到:D:\UE\UE_4.27\Engine\Binaries\Win64,
?WindowS+R打開CMD命令
運(yùn)行UnrealPak,運(yùn)行結(jié)果如下
?二、打開虛幻引擎,Cook資源
? ? ?注意如果想要加載Pak內(nèi)資源,那么這些資源必須是經(jīng)過Cook的。如果打包的是未Cook的資源,那么即使Pak掛載成功,也不可能會(huì)成功加載Pak內(nèi)資源。
?Cook好之后,存儲(chǔ)的路徑在你的I:\DBJTest\Saved\Cooked\WindowsNoEditor\DBJTest\Content\DLC
?使用命令開始打包
第一種:打包單個(gè)文件夾,此處的文件夾為DLC
打包Pak的命令行格式
UnrealPak “存儲(chǔ)Pak的路徑+Pak包名” -create="Cook好的資源的路徑"
成功之后會(huì)出現(xiàn)文件DLCtest.pak
第二種:打包整個(gè)Content文件
unrealpak "I:\DLCtest.pak" -create=I:\DBJTest\Saved\Cooked\WindowsNoEditor\DBJTest\Content
第三種:打包單個(gè)文件
unrealpak "I:\DLCtest.pak" -create=I:\DBJTest\Saved\Cooked\WindowsNoEditor\DBJTest\Content\DLC\download.uasset
打包完成后就能在你對(duì)應(yīng)的文件夾中找到相對(duì)應(yīng)的文件
三、掛載Pak包
?1.自動(dòng)掛載
如果手動(dòng)將Pak放在以下這些項(xiàng)目路徑中,引擎將會(huì)自動(dòng)加載Pak
[ProjectName]/Content/Paks
[ProjectName]/Saved/Paks
Engine/Content/Paks
?2.手動(dòng)掛載
在Bulid.cs里面加入模塊PakFile
public class DBJTest : ModuleRules
{
public DBJTest(ReadOnlyTargetRules Target) : base(Target)
{
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
PublicDependencyModuleNames.AddRange
(
new string[]
{
"Core",
"CoreUObject",
"Engine",
"InputCore",
"HeadMountedDisplay",
"PakFile",
}
);
}
}
MyPlayerController.h文件
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/PlayerController.h"
#include "MyPlayerController.generated.h"
/**
*
*/
UCLASS()
class DBJTEST_API AMyPlayerController : public APlayerController
{
GENERATED_BODY()
public:
virtual void BeginPlay() override;
UFUNCTION(Exec)
void TestLoadPak(FString InPakFullPath);
TSharedPtr<class FPakPlatformFile> PakPlatform;
class IPlatformFile* OldPlatform;
};
MyPlayerController.cpp文件
// Fill out your copyright notice in the Description page of Project Settings.
#include "MyPlayerController.h"
#include "IPlatformFilePak.h"
#include "PlatformFilemanager.h"
#include "Runtime/Engine/Classes/Engine/StaticMeshActor.h"
#include "GenericPlatformFile.h"
void AMyPlayerController::BeginPlay()
{
Super::BeginPlay();
OldPlatform = &FPlatformFileManager::Get().GetPlatformFile();
PakPlatform = MakeShareable(new FPakPlatformFile());
PakPlatform->Initialize(&FPlatformFileManager::Get().GetPlatformFile(), TEXT(""));
}
void AMyPlayerController::TestLoadPak(FString InPakFullPath)
{
FPlatformFileManager::Get().SetPlatformFile(*PakPlatform.Get());
FString PakFileFullPath = InPakFullPath;
FPakFile* TmpPak = new FPakFile(PakPlatform.Get(), *PakFileFullPath, false);
FString PakMountPoint = TmpPak->GetMountPoint();
int32 Pos = PakMountPoint.Find("Content/");
FString NewMountPoint = PakMountPoint.RightChop(Pos);
NewMountPoint = FPaths::ProjectDir() + NewMountPoint;
//FString NewMountPoint = "../../../DBJTest/Content/DLC/";
TmpPak->SetMountPoint(*NewMountPoint);
if (PakPlatform->Mount(*PakFileFullPath, 1, *NewMountPoint))
{
TArray<FString> FoundFilenames;
TmpPak->FindFilesAtPath(FoundFilenames, *TmpPak->GetMountPoint(), true, false, false);
if (FoundFilenames.Num() > 0)
{
for (FString& Filename : FoundFilenames)
{
if (Filename.EndsWith(TEXT(".uasset")))
{
FString NewFileName = Filename;
NewFileName.RemoveFromEnd(TEXT(".uasset"));
int32 Pos = NewFileName.Find("/Content/");
NewFileName = NewFileName.RightChop(Pos + 8);
NewFileName = "/Game" + NewFileName;
UObject* LoadedObj = StaticLoadObject(UObject::StaticClass(), NULL, *NewFileName);
UStaticMesh* SM = Cast<UStaticMesh>(LoadedObj);
if (SM)
{
AStaticMeshActor* MeshActor = GetWorld()->SpawnActor<AStaticMeshActor>(AStaticMeshActor::StaticClass(), FVector(0,0,460), FRotator(0,0,0) );
MeshActor->SetMobility(EComponentMobility::Movable);
MeshActor->GetStaticMeshComponent()->SetStaticMesh(SM);
break;
}
}
}
}
}
FPlatformFileManager::Get().SetPlatformFile(*OldPlatform);
}
世界設(shè)置要選擇GameMode
?運(yùn)行Play,按下~按鍵,輸入命令testLoadPak I:\DLCtest.pak文章來源:http://www.zghlxwxcb.cn/news/detail-497524.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-497524.html
到了這里,關(guān)于【虛幻引擎】UE4/UE5 pak掛載的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!