最近看到UE提供的Pak 解析插件更新到了5.4 版本,所以就想测试一下动态加载Pak 里面的数据效果,以前是在5.1版本测试的,现在项目升级到了5.3,把自己的一些研究记录一下。
一、Pak 文件打包
1、烘赔前项目设置:取消勾选“使用IO保存”,否则会出现Pak 挂载失败

取消勾选“共享材质着色器代码”,否则加载Pak 数据会没有材质

添加“额外烘赔目录”,对于需要打包Pak 的资源,需要烘赔,为了保证烘赔的数据内容完整,需要设置一个资源目录,包含了需要打包Pak的所有数据

有时候不想烘赔工程的所有数据,可以临时设置“永不烘赔目录”,这样加快烘赔的速度,否则烘赔一次很长时间。

2、打包工程的项目设置,如果打包的项目跟烘赔数据的项目不一致,打包工程的项目设置也需要和第一步的项目设置一致。
3、烘赔内容

4、打包Pak 。烘赔完的数据在项目工程的Save 目录下,类似
"G:\XX\Saved\Cooked\Windows\XXContent\Data\Model\FA\PakTest"
使用命令行可以对具体某个烘赔目录下的所有数据进行烘赔,参考样例如下:
网上有很多例子,这里就不一一描述


到这里就可以生成一个Pak 文件。
二、Pak 解析加载
1、参考样例:
https://epicgames.ent.box.com/s/hecu7ew61l3yu9smc5ll44vp8xdbdtgz
三、问题总结
1、打包Pak 时不能出现中文或特殊字符,否则会打包失败
2、打包的资源必须在同一个目录,比如静态网格体不能引入同一个目录下的Texture 里面的图片,否则加载后,没有材质。(这个在5.1版本的时候没出现这个问题,5.3却不行。如果有了解的同学可以互相学些一下)
3、在开放世界的场景中,使用了nanite 加载数据,会导致程序崩溃,特别是数据量大的时候,不知道什么原因。如果只是加载Pak 的资源,不使用nanite 的数据展示,却没有任何问题。(疑惑中的疑惑)