源码理解 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);
    }
};
相关推荐
晴夏。6 天前
UE原生第三人称相机源码分析
游戏·ue5·ue4·相机·ue·3c
Yuk丶9 天前
Procedural Dialogue Engine - UE4程序化对话系统的技术实现
c++·游戏引擎·ue4·游戏程序·虚幻
小江村儿的文杰20 天前
解决Rider编译日志乱码的方法
ue4
Yuk丶21 天前
UE4客户端开发技术问题汇总
面试·ue4·图形学·ue4客户端开发
邪修king23 天前
【UE4/UE5 萌新向】有C++基础如何快速入门虚幻引擎?超详细图文全揭秘!
c++·ue5·ue4
每天回答3个问题1 个月前
LeetCodeHot100|对称二叉树、二叉树的直径、二叉树的层序遍历
数据结构·c++·ue4·
Tancenter1 个月前
CARLA Unreal Engine 4 (UE4) 在运行时遇到的 崩溃,与 Vulkan 图形 API 相关
ue4·carla
每天回答3个问题2 个月前
leetcodeHot100|148.排序链表
数据结构·c++·链表·ue4
a1117762 个月前
Elven Girl Belle - UE4/UE5 角色资源(附下载链接)
ue5·ue4
Kang.Charles2 个月前
UE4 C++将Json数据写入目标字符串
c++·json·ue4