前文
在日常的开发中,我们总免不了要去提升和总结自己的开发方式,来不断提高开发效率。UE4 的编辑器虽然功能齐全,但往往有些操作是开发者想通过一键运行脚本的方式来解决的,例如编译和打包,不仅效率高而且还可以让团队中的开发者也参与到打包中来。那 UE4 支持该操作吗?答案必须是 YES 啊!
知识点
UE4 为开发者提供了 RunUAT 工具来实现自动化的编译和打包,该工具支持 Windows,Mac以及Linux。
先来看看它打包的命令行参数吧!
BuildCookRun 用于给整体项目执行打包,它的打包过程是: 1.先编译(build) 2.资源的烘焙(cook) 3.stage 4.package 5.archive
基本参数
- CrashReporter: 编译CrashReporter
- Clean: 重新完整构建
- SignedPak: 使用加密的pak文件
- SignPak: 指定加密pak文件密钥内容或者密钥文件路径
- RunAssetNativization: 将蓝图资产转成代码
- Pak: 是否将资源文件打包到pak中
- SkipPak: 使用上一次的pak文件,包含-Pak
- UTF8Output: log,控制台窗口等输出使用UTF8编码
Build相关参数
- Build: 执行编译过程
- SkipBuildClient: 不编译客户端
- SkipBuildEditor: 不编译编辑器
- NoXGE: 不使用并行编译
- ForceDebugInfo: 在非Debug版本中加入调试信息
Cook相关参数
- Cook: 使用 Cooked 资源
- SkipCook: 跳过cook阶段,使用上一次Cook好的资源,同时包含了 -Cook 参数
- IgnoreCookErrors: 忽略cook过程中的错误
- CookFlavor=Multi/ATC/DXT/ETC1/ETC2/PVRTC/ASTC: 指定Android Cook格式
- CookPartialGC: cook阶段磁盘空间不够不要清理所有资源
- CookInEditor: 使用editor进行cook而不是UAT
- CookOutputDir: 指定cook结果保存目录,默认在Project/Saved/Cooked
- AdditionalCookerOptions=xxx: 额外的传给cooker进程的命令行
- Compressed: 压缩
- EncryptIniFiles: 加密ini文件,只在指定了加密密钥和使用pak文件时候有效
- EncryptEverything: 加密所有的文件
- EncryptPakIndex: 加密pak索引
- UnversionedCookedContent: 不包含版本号
- IterativeCooking(-Iterate): 增量 cook
- CookAll: cook content 目录下的所有文件
- CookMapsOnly: 只 cook 关卡和关卡引用到的资源,只会在同时指定了-CookAll 时生效
- MapsToCook=map1+map2+map3: 指定要cook的关卡,多个之间用+号连接
- SkipCookingEditorContent: 不cook引擎编辑器使用到的资源
- NumCookersToSpawn=n: 指定cooker进程的数量
- FastCook: 开启FastCook,如果项目支持的话
Stage相关参数
- Stage: 保存构建过程中的中间结果
- SkipStage: 不保存构造过程中的中间结果,使用上一次的结果,这个命令行同时包含了-Stage
- StagingDirectory: 构建过程中中间结果保存目录,默认在 ProjectPath\Saved\StagedBuilds
- NoDebugInfo: 不拷贝调试信息文件到 Stage 目录,最终打出来的包中不包含调试信息
- NoCleanStage: 新构建不会清理之前 StagingDirectory 中的文件, 如果指定了-clean 则一定会清理掉
- StageCommandline: 放在UE4CommandLine.txt中的一系列命令行,打出来的包在运行时会从这个文件中读取命令行并执行
Package相关参数
- Package: 执行打包
- Distribution: 打的包是发布版本
- Prereqs: 将依赖打包到一起
Archive相关参数
- Archive: 是否将构建结果归档到指定目录
- ArchiveDirectory: 归档目录
- CreateAppBundle: 当目标平台是Mac时,指定这个参数可以归档成一个 .app 文件
Deploy相关参数
- Deploy: 部署
- DeployFolder: 部署路径
BuildCookRun 命令打包
下面就提供几个打包的命令供大家参考
编译客户端
RunUAT BuildCookRun -project="full_project_path_and_project_name.uproject" -noP4 -platform=Win64 -clientconfig=Development -serverconfig=Development -cook -allmaps -build -stage -pak -archive -archivedirectory="Output Directory"
cook客户端
RunUAT BuildCookRun -project="full_project_path_and_project_name.uproject" -noP4 -platform=Win64 -clientconfig=Development -serverconfig=Development -cook -allmaps -NoCompile -stage -pak -archive -archivedirectory="Output Directory"
编译服务器
RunUAT BuildCookRun -project="full_project_path_and_project_name.uproject" -noP4 -platform=Win64 -clientconfig=Development -serverconfig=Development -cook -server -serverplatform=Win64 -noclient -build -stage -pak -archive -archivedirectory="Output Directory"
cook服务器
RunUAT BuildCookRun -project="full_project_path_and_project_name.uproject" -noP4 -platform=Win64 -clientconfig=Development -serverconfig=Development -cook -server -serverplatform=Win64 -noclient -NoCompile -stage -pak -archive -archivedirectory="Output Directory"
最后
打包效率的高低主要依赖于工程的规模以及打包机的配置,上面所说的服务器指的是ue4的专用服务器,需要在项目中配置 target,不然执行脚本的时候会找不到 -server 这个选项。在打包的时候 -clean 选项可以先不加到命令行中,因为这个选项会将工程清理后再重新编译打包,打包的时间会变得很久,如果遇到项目出包可不用此选项。
我是杰少,如果您觉的我写的不错,那请给我 点赞+评论+收藏 后再走哦!
往期文章:
- UE4:来为我们的角色制作一个血条吧
- 使用 Google Breakpad 来助力解决程序崩溃
- UE4 多人游戏服务器探索
- 使用虚幻引擎自动化工具实现自动化部署
- 如何在 UE4 中制作一扇自动开启的大门
- 如何在 UE4 中用代码去控制角色移动
- 如何给 UE4 场景添加游戏角色
- UE4:Android 平台开发实践指南
- UE4 开发避坑指南(持续更新)
- 新年开工啦,放个小烟花庆祝一下
- 聊聊与苹果审核员的爱恨情仇(下)
- 聊聊与苹果审核员的爱恨情仇(上)
- 一名普通工具人的 2021 | 2021年终总结
- 二叉树刷题总结:二叉搜索树的属性
- 二叉树总结:二叉树的属性
- 二叉树总结:二叉树的修改与构造
- StoreKit2 有这么香?嗯,我试过了,真香
- 看完这篇文章,再也不怕面试官问我如何构造二叉树啦!
- 那帮做游戏的又想让大家氪金,太坏了!
- 手把手带你撸一个网易云音乐首页 | 适配篇
- 手把手带你撸一个网易云音乐首页(三)
- 手把手带你撸一个网易云音乐首页(二)
- 手把手带你撸一个网易云音乐首页(一)
- 代码要写注释吗?写你就输了
- Codable发布这么久我就不学,摸鱼爽歪歪,哎~就是玩儿
- iOS 优雅的处理网络数据,你真的会吗?不如看看这篇
- UICollectionView 自定义布局!看这篇就够了
请你喝杯 ☕️ 点赞 + 关注哦~
- 阅读完记得给我点个赞哦,有👍 有动力
- 关注公众号--- HelloWorld杰少,第一时间推送新姿势
最后,创作不易,如果对大家有所帮助,希望大家点赞支持,有什么问题也可以在评论区里讨论😄~**