【UE4】避免因为某些ini配置变动而重新Cook资源

最近经常打包,发现每次打包资源都全部重新Cook了,这对工作效率影响很大,原因包括我们在打包流程中自动修改了ini文件来配置版本号等。不经过配置的引擎会在ini进行变动的时候清理掉原有Cook过的内容。因此需要通过一系列配置,以保证每次Cook的内容是增量的,来加快工作进度。

首先要使增量Cook生效,必须在构建命令中加入-iterate,否则在每次Cook前会将Cook产物文件夹整个删除。
然后需要在DefaultEditor.ini文件中加入类似如下内容:

1
2
3
4
[CookSettings]
+ConfigSettingBlacklist=*.Engine:/Script/IOSRuntimeSettings.IOSRuntimeSettings:VersionInfo
+ConfigSettingBlacklist=*.Engine:/Script/AndroidRuntimeSettings.AndroidRuntimeSettings:VersionDisplayName
+ConfigSettingBlacklist=*.Engine:/Script/AndroidRuntimeSettings.AndroidRuntimeSettings:StoreVersion

实际上是通过配置增加ConfigSettingBlacklist中的内容项来时引擎在Cook的时候忽略相关的配置字段。其格式为

1
+ConfigSettingBlacklist=BuildMachinePlatform.ConfigFile:SectionName:ValueName

其中:

占位名 C++中的涵义 ini中的涵义 参考取值
BuildMachinePlatform N/A 构建机器的平台 取值可以为Windows/Mac/Linux等,支持Wildcard(*)。
ConfigFile C++类中UCLASS(config=Engine)配置的内容 ini文件名的后半段,即Base、Default等字样后面的部分 Engine/Game/Editor
SectionName C++类所属的路径名(Path/Of/Package.ClassPath) 每个配置文件中方括号内的内容
ValueName C++类中的变量名 配置文件中具体的配置里行首的名称 略,支持Wildcard(*)

配置成功后,将会在下下次打包时生效。