本文已参加「新人创作礼」活动, 一同敞开创作之路。

前言

闲言少叙,直接进入主题。针对问题,说处理方案。

打包准备

打包时需求cook一切原料、纹理,所以假如有没有运用到的资源assets,最好删去掉。可是删去的时分必定要注意,不要有任何其他资源引用了它。

生成 sln 文件

假如能顺利打包,那就不在本文的评论范围内了。假如不能顺利打包,一般会有许多提示,如图所示,大概总结为“AutomationTool exiting with ExitCode = n”,这里常见的 n 值有 1,5,25等。

浅谈UE4项目打包中遇到的几个问题
这里,里边提到了已具有了相同键的项,具体的过错原理还不太清楚,可是通过给纯蓝图项目增加C++类以促使其生成sln文件,确实处理了这一步的过错。

增加 C++ 类

假如不能顺利打包的话,首要需求考虑的是,是不是以蓝图为模板的项目,而且从未增加过 C++ 类,假如是的话,试着在项目中增加一个新的 C++ 类,空类、Actor类、Pawn类等等都行。 可是估量很快就会发现,增加失利。大概会提示说,

浅谈UE4项目打包中遇到的几个问题

遇到这种问题,咱们能够测验做以下几种操作。 首要,来到项目地点的文件夹,如下图所示,或许在未成功生成sln文件时,你所看到的项目文件夹的内容比这些少几个,可是那不是要点。要点是赤色框线圈出的这几个文件夹:Binaries,Intermediate,Saved等文件都是能够删去的,是不影响项目的。

浅谈UE4项目打包中遇到的几个问题
删去这些文件夹后,运用txt或许Notepad翻开 .uproject 文件,能够将其间的“Modules”整个删去掉,然后再测验增加C++类。 在这里,能够看到下面的“Plugins”部分,特别是常常会有一些项目或许之前在机器A上翻开过,而且带上了GameAnalytics或许其他插件,而机器B上没有这个插件,也并不需求这个插件,此时,删去掉地下这坨GameAnalytics的大括号内容即可防止每次翻开项目时弹出的插件不存在对话框。

浅谈UE4项目打包中遇到的几个问题
当成功地创建了C++类之后,翻开.sln文件,运用VS进行Build,Build成功后再进行UE4中的打包基本就没有什么问题了。

浅谈UE4项目打包中遇到的几个问题

ExitCode25,Cook过错

UE4的打包分为四五部分,其间第一步是对一切 asset 进行 cook。在这一步,UE4 会对几乎一切的 处于 Content 中的文件及其间的一切内容进行处理,不管你是否是用到了它,或许不管你是否在蓝图中止开了那个节点的输入,都会报错 Error 或许 Warning。 因而,在制造程序的进程中,尽量不要留下一些不必的过错(蓝图)代码。尽管你断开了它的输入(驱动输入),可是在打包进程中仍然会犯错。

浅谈UE4项目打包中遇到的几个问题

这个图片显示了当打包自动化程序过错,未能成功打包,并返回为过错代码25的情况。这种情况是 UE4 在打包进程中,Cook的进程中有一些过错,尤其是 Error。网上找几行,咱们就能够看到一个 “Failure – 107 error(s), 2379 warning(s)”。再往上找,咱们就能够看到每一条的Warning和Error信息,然后逐条修正,这个进程类似于在VS中编程后Build然后呈现了Error和Warning,相同的,Warning能够不理睬,可是最好能修正。

浅谈UE4项目打包中遇到的几个问题

再向上找,咱们能够看到一个 Summary,这里边一条条地列举了一切的Error和Warning。咱们需求一条条修正。 UE4供给了比VS更多的修正提示,如

No parent instance found for this SubstanceTexture2D (SubstanceTexture2D /Game/Material/island/Surface/Grass/Grass__Middle_INST_roughness.Grass__Middle_INST_roughness). You need to delete 这是由于 Substance 插件制造的贴图呈现了问题,咱们能够把它删去,由于这个贴图确实在工程中没有运用到。假如有运用到的话,咱们能够相对应地,给它替换一个贴图。

Error: Impossible to find parent package for “Grass__Middle_INST6”. You should delete the object.

这也是个原料问题。删去,或许给运用了该原料的目标替换原料。

LogBlueprint:Error: Compiler Error Spawn node Create Widget must have a class specified. from Source: /Game/UI/HUD/gameHUD.gameHUD

这个是蓝图中的过错,当我翻开这个蓝图时发现上面的Compile是过错的,便是赤色制止图标。然后根据蓝图编译提示的过错,做了适当的修正。嗯,这个过错是由于在开发进程中这个蓝图并没有运用到,可是编译犯错了,也是不可的。

Error: Compiler Error The property associated with Damageing could not be found from Source: /Game/UI/Damaged/UI_Damage.UI_Damage

这个也是个蓝图过错,翻开提示中的那个蓝图就能够很清楚的看到,一个变量是无效的。这个,唉,做 UI 的用到了游戏中的角色的某个特点,而角色程序员并未供给 Get 函数,直接把那个特点变量 public 露出给 UI 进行调用,后边他修正程序的时分又把那个变量给删去了。。。。啊。。。。心中有一万匹动物飞跃而过!

对这些提到的过错逐个作出相应的修正之后再打包一次。嗯,你或许还会是Cook Failure,Exit with errorcode = 25。可是, Error 的数量会削减。你修正了几个,就削减了几个。由于UE4 log只是供给了前一百个Error/Warning,只供给了部分Error。因而,需求不断地打包,查log,然后修正过错,再打包,再查log,再修正过错。直到最终它能完成Cook这个进程。

成功打包

MainFrameActions: Packaging (Windows (64-bit)): UE4Editor-Cmd: [2017.04.13-09.33.42:951][ 0]LogInit:Display: LogUObjectGlobals:Warning: Failed to load ‘E:/ACEProject/ACE_Noprint/Content/UI/HUD/MIAOZ.uasset’: Can’t find file for asset ‘/Game/HUD/Textures/MZZX’ while loading E:/ACEProject/ACE_Noprint/Content/UI/HUD/MIAOZ.uasset. MainFrameActions: Packaging (Windows (64-bit)): UE4Editor-Cmd: [2017.04.13-09.33.42:951][ 0]LogInit:Display: LogLinker:Warning: Can’t find file for asset ‘/Game/HUD/Textures/FXLJ’ while loading NULL. MainFrameActions: Packaging (Windows (64-bit)): UE4Editor-Cmd: [2017.04.13-09.33.42:951][ 0]LogInit:Display: LogUObjectGlobals:Warning: Failed to load ‘/Game/HUD/Textures/FXLJ’: Can’t find file for asset ‘/Game/HUD/Textures/FXLJ’ while loading NULL. MainFrameActions: Packaging (Windows (64-bit)): UE4Editor-Cmd: [2017.04.13-09.33.42:965][ 0]LogInit:Display: LogLinker:Warning: Can’t find file for asset ‘/Game/HUD/Textures/MZZX’ while loading NULL. MainFrameActions: Packaging (Windows (64-bit)): UE4Editor-Cmd: [2017.04.13-09.33.42:965][ 0]LogInit:Display: LogUObjectGlobals:Warning: Failed to load ‘/Game/HUD/Textures/MZZX’: Can’t find file for asset ‘/Game/HUD/Textures/MZZX’ while loading NULL. MainFrameActions: Packaging (Windows (64-bit)): UE4Editor-Cmd: [2017.04.13-09.33.42:965][ 0]LogInit:Display: LogLinker:Warning: Can’t find file ‘/Game/HUD/W_LeftScreenTexture2’ MainFrameActions: Packaging (Windows (64-bit)): UE4Editor-Cmd: [2017.04.13-09.33.42:966][ 0]LogInit:Display: LogUObjectGlobals:Warning: Failed to load ‘/Game/HUD/W_LeftScreenTexture2’: Can’t find file ‘/Game/HUD/W_LeftScreenTexture2’ MainFrameActions: Packaging (Windows (64-bit)): UE4Editor-Cmd: [2017.04.13-09.33.42:967][ 0]LogInit:Display: LogLinker:Warning: Can’t find file for asset ‘/Game/HUD/W_LeftScreenTexture2’ while loading E:/ACEProject/ACE_Noprint/Content/UI/HUD/HUD_Texture2.uasset. MainFrameActions: Packaging (Windows (64-bit)): UE4Editor-Cmd: [2017.04.13-09.33.42:968][ 0]LogInit:Display: NOTE: Only first 50 warnings displayed. MainFrameActions: Packaging (Windows (64-bit)): UE4Editor-Cmd: [2017.04.13-09.33.42:968][ 0]LogInit:Display: MainFrameActions: Packaging (Windows (64-bit)): UE4Editor-Cmd: [2017.04.13-09.33.42:968][ 0]LogInit:Display: Success – 0 error(s), 264 warning(s) MainFrameActions: Packaging (Windows (64-bit)): UE4Editor-Cmd: [2017.04.13-09.33.42:969][ 0]LogInit:Display: MainFrameActions: Packaging (Windows (64-bit)): UE4Editor-Cmd: PackagingResults:Warning: Warning Warning Unable to find package for cooking /Game/main MainFrameActions: Packaging (Windows (64-bit)): UE4Editor-Cmd: Execution of commandlet took: 918.43 seconds MainFrameActions: Packaging (Windows (64-bit)): CommandUtils.Run: Run: Took 1001.375s to run UE4Editor-Cmd.exe, ExitCode=0 MainFrameActions: Packaging (Windows (64-bit)): Project.Cook: ********** COOK COMMAND COMPLETED MainFrameActions: Packaging (Windows (64-bit)): Project.CopyBuildToStagingDirectory: STAGE COMMAND STARTED MainFrameActions: Packaging (Windows (64-bit)): Project.CreateStagingManifest: Creating Staging Manifest… MainFrameActions: Packaging (Windows (64-bit)): Project.CleanStagingDirectory: Cleaning Stage Directory: E:\ACEProject\ACE_Noprint\Saved\StagedBuilds\WindowsNoEditor MainFrameActions: Packaging (Windows (64-bit)): Project.CopyManifestFilesToStageDir: Copying NonUFSFiles to staging directory: E:\ACEProject\ACE_Noprint\Saved\StagedBuilds\WindowsNoEditor MainFrameActions: Packaging (Windows (64-bit)): Project.CopyManifestFilesToStageDir: Copying UFSFiles to staging directory: E:\ACEProject\ACE_Noprint\Saved\StagedBuilds\WindowsNoEditor MainFrameActions: Packaging (Windows (64-bit)): Project.CopyBuildToStagingDirectory: STAGE COMMAND COMPLETED ********** MainFrameActions: Packaging (Windows (64-bit)): Project.Package: ********** PACKAGE COMMAND STARTED MainFrameActions: Packaging (Windows (64-bit)): Project.Package: PACKAGE COMMAND COMPLETED MainFrameActions: Packaging (Windows (64-bit)): Project.Archive: ARCHIVE COMMAND STARTED MainFrameActions: Packaging (Windows (64-bit)): Project.Archive: ARCHIVE COMMAND COMPLETED ********** MainFrameActions: Packaging (Windows (64-bit)): Automation.Execute: BUILD SUCCESSFUL MainFrameActions: Packaging (Windows (64-bit)): Program.Main: AutomationTool exiting with ExitCode=0 (Success) MainFrameActions: Packaging (Windows (64-bit)): Domain_ProcessExit

基本上过了 COOK 进程,后边的 STAGE, PACKAGE, ARCHIVE 都是比较好过,不容易再有过错的。

打包总结

为了防止打包时呈现各种莫名其妙的过错。必定要在工程制造的进程中处处当心,不要给后边的打包进程挖坑!!!

  • 程序类之间的调用联系、接口必定要定好,被调用类程序的创作者应该有必定的工作涵养!
  • 蓝图中,不运用的代码部分必定要做好处理,保证里边没有丧命过错。最好能够删去不必要的代码。否则很容易呈现程序能够在UE4中运转无误,可是没法打包的情况。最好仍是用C++编程。
  • 不运用的 asset 必定要删去洁净!尤其是一些或许存在过错的原料、贴图!天知道TMD在这张图之前我修正过多少 Material 和 Texture 的过错。
  • Substance 制造的贴图或原料在UE4 12版别中能够用的,当运用UE4直接提升为14版别后,不能运用,呈现一大堆过错!!
  • 主张在工程制造进程中,分阶段地定时测验一下打包,不要把打包放在最终。。等这个工程在开发进程中现已积累满了各式各样的臭虫之后再弄,太恶心了!!和许多开发准则相同,乃至和许多疫情处理准则相同,早查看,早发现,早处理,早隔离,早医治!!不要拖。