打工累吗?累。但我不能哭,因为骑电动车的时候擦眼泪不安全。

Cook

Unreal 打包的时候经常会在 Cook 资源时出现问题,但是只看 log 很难判断问题到底出现在哪里,这时候可以在路径 Engine\Programs\AutomationTool\Saved\Logs 中找到 Cook 相关的 log,例如:Cook-2024.07.06-00.38.01.txt,然后找到类似下列的命令:

LogInit: Command Line:  D:\Unreal5_project\TestProject\TestProject.uproject -run=Cook -TargetPlatform=Windows -unversioned -fileopenlog -abslog=D:\UnrealEngine-5.4.2-release\Engine\Programs\AutomationTool\Saved\Cook-2024.07.06-00.12.43.txt -stdout -CrashForUAT -unattended -NoLogTimes -UTF8Output

将其复制到 Visual Studio 的启动命令

1-lwij.webp
然后运行工程,就可以调试 cook 了。

调试项目的 exe

以下列工程为例:

2-rvyd.webp

技巧一

TestProject.exe -waitfordebugger

通过命令行启动游戏时加上 waitfordebugger 参数,游戏会等到 Visual Studio Attach 到游戏进程时才会继续执行。

技巧二

1-cdka.webp

当选择 Development、Shipping 或者 Test 的时候,可以直接运行并调试游戏,不需要打包,相对比较方便。

技巧三

如果使用技巧二去调试游戏,有一个前置条件是必须在编辑器下 Cook 资源,如下图所示:

1-pwss.webp

对于一些大型项目来说,Cook 资源非常耗时,这时候如果你有项目打包好的包体,可以直接用 Visual Studio 编译 TestProject 工程,然后用生成的 TestProject.exe 和 TestProject.pdb 去替换包体下对应的文件,就可以用技巧一去调试游戏。如下图所示:

1-cdka.webp

2-jdci.webp

2-rvyd.webp

技巧四

在调试 exe 的过程中,如果因为其他人的插件到导致游戏无法启动,可以在 PluginManager.cpp 文件中修改加载插件的代码,屏蔽掉问题插件。

1-yazx.webp

修改成如下:

const TSharedRef<FPlugin>& Plugin = DiscoveredPluginMapUtils::ResolvePluginFromMapVal(PluginPair.Value);
if (Plugin->Name == "插件名")
	continue;

这样就能调试自己的插件了~~。

Android 打包

  • 首先需要在 Android Studio 中下载 Command-line Tools 8.0

1-ksiv.webp

  • 在目录 Engine\Extras\Android 下打开 SetupAndroid.bat 进行修改,然后执行。

2-trmt.webp

改为

SDKMANAGER=%STUDIO_SDK_PATH%\cmdline-tools\8.0\bin\sdkmanager.bat

3-htij.webp

  • 通过 Unreal 来进行打包。

通常情况下,可以成功打出包体,如下图所示:

1-iune.webp

但是,如果发生错误,可以使用 Android Studio 打开 Unreal 生成的 gradle 工程来进行调试:

2-eczo.webp

3-fhzi.webp

在 Android Studio 中会显示更多的调试信息,帮助你解决问题,当 Make Project 可以成功执行时,再使用 Unreal 打 Android 包体就会成功。