源码理解 UE4中的 FCookStatsManager::FAutoRegisterCallback RegisterCookStats

复制代码
官方文档:https://dev.epicgames.com/documentation/zh-cn/unreal-engine/API/Runtime/Core/ProfilingDebugging/FCookStatsManager

文档中的注释:
When a cook a complete that is configured to use stats (ENABLE_COOK_STATS), it will broadcast this delegate, which, when called, gives you a TFunction to call to report each of your stats.

代码:
FCookStatsManager::FAutoRegisterCallback RegisterCookStats([](FCookStatsManager::AddStatFuncRef AddStat)
{ ……

首先,RegisterCookStats是一个全局(非静态)变量,它的类型是 FCookStatsManager::FAutoRegisterCallback ,它调用的初始化器是 ( []()... ) ,也就是说,传入了一个lambda函数,作为初始化器的参数。

那么看FCookStatsManager::FAutoRegisterCallback的声明如下,可以得知,所有声明一个 FCookStatsManager::FAutoRegisterCallback 结构体,本质上就是给 static CookStatsCallbacks 静态变量添加元素(也就是该lambda方法)。

复制代码
/** Use this to register a callback to gather cook stats for a translation unit. When a cook is finished, this delegate will be fired. */
static CORE_API FGatherCookStatsDelegate CookStatsCallbacks;

/** Called after the cook is finished to gather the stats. */
static CORE_API void LogCookStats(AddStatFuncRef AddStat);

/** Helper struct to auto-register your STATIC FUNCTION with CookStatsCallbacks */
struct FAutoRegisterCallback
{
    template<typename Func>
    explicit FAutoRegisterCallback(Func Callback)
    {
       CookStatsCallbacks.AddLambda(Callback);
    }
};
相关推荐
Kin__Zhang10 天前
随手记录 UE4/CARLA 仿真器 segmentation fault
android·java·ue4
小江村儿的文杰11 天前
UE4在MacOS上将Commit.gitdeps.xml设为Git LFS文件的潜在弊端
xml·ue4
李岱诚16 天前
epic商城下载,ue4报错处理
游戏引擎·ue4
爆米花煮鸡蛋16 天前
UE4.27生成sln时失败:Missing .../DotNET/UnrealBuildTool/UnrealBuildTool/UnrealBuildTool.exe after build
ue4
海中有金16 天前
UE4 内存池浅谈[3]——3代内存池对比总观
ue4·图形渲染
询问QQ:6882388617 天前
Labview交通灯程序设计——机动车道与人行道绿灯时间设置带报告
ue4
倾心唯恋18 天前
更新Epic后通过工程路径和Epic双击打不开UE4项目,提示Failed to launch editor的解决办法
ue4
2501_9389313318 天前
UE4SS-RE 安装全指南:基础环境变量设置到高级跨版本部署适配
ue4
小宝哥Code18 天前
UE5在布局自定义上的UE4ClassicLayout.ini文件源码解读分析
java·ue5·ue4
T***u33319 天前
PHP在电商中的会员管理
开发语言·wireshark·php·ue4·jina