打工累吗?累。但我不能哭,因为骑电动车的时候擦眼泪不安全。
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 的启动命令
然后运行工程,就可以调试 cook 了。
调试项目的 exe
以下列工程为例:
技巧一
TestProject.exe -waitfordebugger
通过命令行启动游戏时加上 waitfordebugger 参数,游戏会等到 Visual Studio Attach 到游戏进程时才会继续执行。
技巧二
当选择 Development、Shipping 或者 Test 的时候,可以直接运行并调试游戏,不需要打包,相对比较方便。
技巧三
如果使用技巧二去调试游戏,有一个前置条件是必须在编辑器下 Cook 资源,如下图所示:
对于一些大型项目来说,Cook 资源非常耗时,这时候如果你有项目打包好的包体,可以直接用 Visual Studio 编译 TestProject 工程,然后用生成的 TestProject.exe 和 TestProject.pdb 去替换包体下对应的文件,就可以用技巧一去调试游戏。如下图所示:
技巧四
在调试 exe 的过程中,如果因为其他人的插件到导致游戏无法启动,可以在 PluginManager.cpp 文件中修改加载插件的代码,屏蔽掉问题插件。
修改成如下:
const TSharedRef<FPlugin>& Plugin = DiscoveredPluginMapUtils::ResolvePluginFromMapVal(PluginPair.Value);
if (Plugin->Name == "插件名")
continue;
这样就能调试自己的插件了~~。
Android 打包
首先需要在 Android Studio 中下载 Command-line Tools 8.0
在目录 Engine\Extras\Android 下打开 SetupAndroid.bat 进行修改,然后执行。
改为
SDKMANAGER=%STUDIO_SDK_PATH%\cmdline-tools\8.0\bin\sdkmanager.bat
通过 Unreal 来进行打包。
通常情况下,可以成功打出包体,如下图所示:
但是,如果发生错误,可以使用 Android Studio 打开 Unreal 生成的 gradle 工程来进行调试:
在 Android Studio 中会显示更多的调试信息,帮助你解决问题,当 Make Project 可以成功执行时,再使用 Unreal 打 Android 包体就会成功。