在今年十月份,Nick Penwarden着重介绍了我们在开发《Fortnite Battle Royale》时对虚幻引擎4的若干改进。
他在文章中没有提到的一点是在开发《Battle Royale》时添加的一点宝贵的故障排除技巧。该团队大量使用基于蓝图的小部件,所以我们经常会在C++中看到类似以下示例的调用堆栈,这种调用并不会捕获蓝图中实际发出本地调用的来源。
[你的C++代码] UFunction::Invoke(...) UObject::ProcessEvent(...) AActor::ProcessEvent(...) [堆栈的其余内容]
我在《Fortnite》中要处理很多不太熟悉的代码,所以经常看不出来调用来自于哪里。为了帮助搜索,我添加了一条可以在Visual Studio的Immediate Window中运行的C命令,用于输出当前蓝图/编程调用堆栈。
现在,你就可以在运行游戏的编辑器版本时使用这条命令,
{,,UE4Editor-Core}::PrintScriptCallstack()
以及
::PrintScriptCallstack()
使用4.18和更高版本时,在单一版本中可以使用上述命令。
希望大家能像我一样,在获取UE4项目调用堆栈实时快照时能用上这条命令。