ue4 设置打包名称_聊一聊UE4中的pak

本文详细介绍了UE4中的pak文件,包括pak的创建、序列化格式、运行时挂载、加载文件优先级、MountPoint的计算和作用,以及pak索引结构。通过实例解析了pak文件的工作原理,帮助理解如何在UE4中有效地管理和使用pak文件。
摘要由CSDN通过智能技术生成

24902c5090b863b4a820fd2049943ec3.png

大纲

  • 引言
  • pak文件是什么?
  • 创建pak
  • pak文件的序列化格式
  • 运行时挂载pak文件
  • pak加载文件优先级
  • pak优先级的计算
  • MountPoint的计算
  • 运行时设置MountPoint
  • MountPoint有什么用?
  • Pak索引结构
  • 从pak中加载文件

引言

我们的项目在上一个版本中,在UE4的资源处理方面踩了不少坑。因此特意花了些时间去学习和研究了一下,主要是pak文件方面的内容,希望能帮助大家更好的了解,也起到一个抛砖引玉的作用。

由于本人也接触UE4不久,如有错误或遗漏的地方,望不吝指出。

本文基于UE4 4.24版本。

pak文件是什么?

以我个人的观点,pak文件和zip文件十分类似。UE4将多个文件合并添加到一个文件中,这个文件就是pak。

我们不仅仅能够将UE4自身的资源文件,如uasset、umap等添加到pak文件中,还能够将非资源文件,如.txt、.json等添加到pak中:

e42a6c5e51a0011bbe51b0772874a95a.png

在pak文件中,除了所添加的每个文件的内容外,还会包含一些其他信息:如pak文件是否加密,使用的密钥等等。

创建pak

UE4提供了UnrealPak.exe来创建pak文件,有许多参数可供使用:

ed65905a4a003a3b50b584ca4b1387fc.png

在我们生成项目时,如果选择了Use Pak File,如下图所示:

d29893902a91f6267b29b9b9aab0490c.png

那么Cook的所有资源都会被放入一个独立的pak文件中,位于项目生成路径下的ProjectName/Content/Paks文件夹中(其中ProjectName是项目的名称),否则,生成的项目中包含的都是零散独立的资源。流程如图所示:

ada8d5316ddc6dda080fd3ebdb44d304.png

pak文件的序列化格式

在了解pak文件的序列化格式之前,需要先了解2个数据结构,分别是FPakInfo以及FPakEntry:

5b44ea546348ed5350bd7d8846320889.png

ec18be18262de5b5974a11df921159f8.png

其中FPakInfo中会记录pak文件的一些信息,比如是否加密、密钥、版本号等等。而FPakEntry则用于存储在pak中的文件,每个文件对应一个FPakEntry。

在生成pak时,针对每个需要写入的文件,如果该文件需要压缩的话,则会先进行压缩操作。接着,根据是否压缩,会有名为PrepareCopyFileToPak或PrepareCopyCompressedFileToPak的函数来处理数据(这里以PrepareCopyFileToPak函数来进行说明,PrepareCopyCompressedFileToPak函数十分类似,只不过处理的是压缩后的文件内容)。

PrepareCopyFileToPak函数会填充FPakInputPair对象数据,FPak

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值