一、首先设置UE4引擎的系统环境变量

找到:D:\UE\UE_4.27\Engine\Binaries\Win64,

WindowS+R打开CMD命令

运行UnrealPak,运行结果如下

 二、打开虚幻引擎,Cook资源

     注意如果想要加载Pak内资源,那么这些资源必须是经过Cook的。如果打包的是未Cook的资源,那么即使Pak挂载成功,也不可能会成功加载Pak内资源。

Cook好之后,存储的路径在你的I:\DBJTest\Saved\Cooked\WindowsNoEditor\DBJTest\Content\DLC

使用命令开始打包

第一种:打包单个文件夹,此处的文件夹为DLC

打包Pak的命令行格式

UnrealPak “存储Pak的路径+Pak包名” -create="Cook好的资源的路径"

成功之后会出现文件DLCtest.pak

第二种:打包整个Content文件

unrealpak "I:\DLCtest.pak" -create=I:\DBJTest\Saved\Cooked\WindowsNoEditor\DBJTest\Content

第三种:打包单个文件

unrealpak "I:\DLCtest.pak" -create=I:\DBJTest\Saved\Cooked\WindowsNoEditor\DBJTest\Content\DLC\download.uasset

打包完成后就能在你对应的文件夹中找到相对应的文件

三、挂载Pak包

1.自动挂载

如果手动将Pak放在以下这些项目路径中,引擎将会自动加载Pak

  • [ProjectName]/Content/Paks
  • [ProjectName]/Saved/Paks
  • Engine/Content/Paks

2.手动挂载

在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);}

世界设置要选择GameMode

运行Play,按下~按键,输入命令testLoadPak I:\DLCtest.pak

【虚幻引擎】UE4/UE5 pak挂载相关推荐

  1. 虚幻引擎UE4中的Tick事件

    虚幻引擎UE4中的Tick事件是程序运行中每一帧刷新一次,例如在通常每秒60帧的游戏运行中,Tick事件就每秒执行了60次.这个事件相当于Unity中的Update和LateUpdate函数一样的性质 ...

  2. 虚幻引擎UE4.25版本使用Android打包出错提示:ERROR: cmd.exe failed with args /c 和 :app:assembleDebug的解决方法

    虚幻引擎 UE4.25版本使用Android打包出错提示:ERROR: cmd.exe failed with args /c 和 :app:assembleDebug的解决方法: 在虚幻引擎的jdk ...

  3. [虚幻引擎][UE][UE5]像素流送(Pixel Streaming),像素流去掉黑边和按钮[UE5.1.0],鼠标控制

    [虚幻引擎][UE][UE5]像素流送Pixel Streaming,像素流去掉黑边和按钮[UE5.1.0] 1.写在前面 01.作者碎碎念 02.结果 演示截图 视频教程 2.需要准备的软件 3.U ...

  4. [虚幻引擎][UE][UE5]简单的游戏读档存档

    [虚幻引擎][UE][UE5]简单的游戏读档存档

  5. [虚幻引擎][UE][UE5]在UE中画一个线框球,网格连接画球,高阶画球并操控

    [虚幻引擎][UE][UE5]在UE中画一个线框球,网格连接画球,高阶画球并操控 1.材质法 2.绘制调试球体 3.网格连接 蓝图项目链接: 4.高阶画球并操控 蓝图项目链接: 1.材质法 缺点:是实 ...

  6. 虚幻引擎/UE4离线安装

    虚幻引擎官网:https://www.unrealengine.com/zh-CN/ 虚幻引擎4官方文档:https://docs.unrealengine.com/zh-CN/index.html ...

  7. 虚幻引擎5 (UE5):开发你的前两个游戏

    MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz 语言:英语+中英文字幕(根据原英文字幕机译更准确) |大小解压后:10.0 GB |时长:11h 26m 从头到尾创作两个 ...

  8. Online Subsystem Steam 在线子系统Steam (虚幻引擎UE4 联网)

    在本页: 满足阀门的要求 正在下载Steamworks 设置Steamworks SDK Steam App ID 配置您的应用程序的设置 补充笔记 该在线子系统蒸汽API使您能够出货虚幻引擎4(UE ...

  9. 虚幻引擎(UE4) 日志、打印运行时信息

    概述 日志用于引擎及时反馈给我们运行时刻数据和信息.强大的用途不限于如下: 函数是否被调用 算法使用的什么数据 上报错误给开发组或者用户 特定时刻强制运行致命错误(如断言错误)以停止执行程序. 本章将 ...

最新文章

  1. Android有返回值的Activity
  2. MANIFEST.MF文件全面解析
  3. 海豚浏览器发布双核版本 支持html5
  4. qt 最小化到托盘linux,Qt窗口最小化到托盘,托盘菜单控制
  5. python之禅星号_Python基础1
  6. ElasticSearch 中的中文分词器该怎么玩?_03
  7. Windows Maven环境变量配置
  8. 成功的捷径,学会这一点,赚钱很容易
  9. wifi协议_图解 802.11wifi协议
  10. .net 基础知识大杂烩(2) ——条件语句
  11. 使用docker compose 测试集群网络连接性
  12. win98 支持html5,win98支持1G以上内存的解决办法
  13. zbbz加载成功用不了_cad怎么加载zbbz插件(CAD坐标插件ZBBZ自定义怎么用?)
  14. 可能是史上最详细攻略的广州人才引进入户
  15. java调用浏览器_Java调用浏览器打开网页实例完整版
  16. H5如何实现图文一行分布且图片在左侧而文字在右侧
  17. c语言设计由数组,C语言程序设计_07数组.ppt
  18. 《极简学习法》读书笔记
  19. 基于Cellar的交互式单细胞数据分析
  20. 薄冰-英语语法[1]-名词的格 (易混知识)

热门文章

  1. JavaScript trim() 方法
  2. C++洛谷题解(36)——P1035
  3. 亲子游小程序开发,助力商家掌握亲子流量
  4. 《战双帕弥什》战斗系统解析:适合手机的动作游戏
  5. 社会工程管理-记账报税
  6. linux复制整个内容快捷键,linux复制快捷键_Linux系统快捷键最全合集
  7. BZOJ5217: [Lydsy2017省队十连测]航海舰队 FFT
  8. 教你1分钟学会贴iPhone XS钢化膜
  9. 冲量在线亮相英特尔隐私计算研讨会,基于可信执行环境技术构建更安全的数据流通方案
  10. 3D数学 自定义三维向量类进行运算