资源准备:

以这个资产为例:

cook资源:

use to store 不取消勾选会挂载不上

烘焙内容

烘焙好后在 ..\Saved\Cooked\Windows\ProjectTestPak\Content\...目录下

1.打包资产【未加密】

1.1.打包资产为pak文件【将资产所有依赖放在同一个文件夹下,打包同一个文件夹下的资产】

注意:这种方式,是把文件夹下里所有东西打包成一个pak,需把资产所有依赖放在同一个文件夹下,包括材质、贴图、模型等

命令行打包

导航到引擎安装目录下的...\Engine\Binaries\Win64

我的完整目录是E:\UE_5.2\Engine\Binaries\Win64在此目录下输入cmd 调出命令行

完整命令如下(注意空格)

UnrealPak.exe [pak完整路径] -create=[cook好的资源存放路径]

程序化打包

打包好的pak如下

可以用命令行查看pak包

UnrealPak.exe [pak完整路径] -list

1.2.打包单个资产为pak【将要打包的资产和依赖列表写入.txt打包】

如果对资产进行了整理,用到的材质、贴图等已经打包在项目里就不用再打包到单个pak里,没有的话就要把所有依赖都打包到pak里,有的依赖的资产很多,不方便整理到一个文件夹下,那可以把引用到的资产列表写到.txt里打包

可以用reference viewer查看引用了哪些资产:

通过函数 GetDependencies 可以用获取依赖的资产路径,向下遍历拿到依赖的所有资产路径,然后将资产路径拼接成cook后的路径写入 .txt 文件(有其他好的方法拿到所有依赖的资产欢迎沟通)

写入的 .txt 内容如下:

注:

1.写入txt 的资产路径是 "cook好的资产路径(saved/cooked/..)" " ../../../../+资产相对项目路径"

2.要将.uasset和.uexp路径都写入,贴图还会生成.ubulk文件也要写入

3. -compress 是指压缩

命令行打包

和打包文件夹的方式一样,只是将文件夹路径改成 .txt文件路径

UnrealPak.exe [pak完整路径] -create=[.txt文件路径]

2.挂载pak和加载pak里的资源

build.cs里添加模块 Pakfilepak挂载成功以后 用资源引用路径加载资源(此处写了固定路径测试)

可以把资源加载为UObject,根据类型再去cast to 

资源引用路径:挂载路径(Content 改成 Game)+ 资产名(Name.uasset改成Name.Name)

资产名:

PakFile->FindFilesAtPath(FoundPakNames, *PakFile->GetMountPoint(), true, false, false);

FoundPakNames是pak里的所有资源文件名,如SM_A_AbiesHomolepis_LOD0.uasset

完整路径:

/Game/TwinmotionToUnrealContent/Library/Vegetation/Trees/XF_AbiesHomolepis/SM_A_AbiesHomolepis_LOD0.SM_A_AbiesHomolepis_LOD0

最后蓝图写了测试的页面,项目打包运行如下:

参考:

UE5热更新(Pak包的Cook,打包,加载,踩过的一些坑)_ue热更新-CSDN博客

UE4.26 PAK热更新(动态加载外部资源)_ue热更新-CSDN博客

https://www.bilibili.com/read/cv18078574/  读取pak文件

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐