源码理解 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 天前
UE4布娃娃约束修改
ue4
Yuk丶10 天前
厌倦了假AI对话?用本地大模型给UE注入真智能(已开源!)
c++·人工智能·开源·ue4·游戏程序·ue4客户端开发
emplace_back12 天前
UE 使用UE4PrereqSetup_x64.exe一键安装依赖
ue4
Yuk丶15 天前
LPM的AI 角色三大核心技术实现:长效记忆、人格锁定、低延迟口语化
人工智能·ai·ue4·虚幻·ue4客户端开发
归真仙人17 天前
【UE】Lightmass可执行文件已经过时
ue5·游戏引擎·ue4·虚幻·unreal engine
DoomGT18 天前
Design - 一些免费图标网站
ue5·ue4·虚幻·虚幻引擎·unreal engine
归真仙人22 天前
【UE】VR一体机转场
ue5·ue4·vr·虚幻引擎·unreal engine
洋洋061722 天前
UE4/UE5 引擎常见面试题总结(1)
ue5·ue4
Yuk丶25 天前
UE4 与 UE5:技术差异深度解析
c++·ue5·游戏引擎·ue4·游戏程序·虚幻
晴夏。1 个月前
unlua实现原理
游戏·ue5·ue4·lua·ue·unlua