源码理解 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);
    }
};
相关推荐
小江村儿的文杰2 天前
UE4 PSO介绍四:PSO Precache
ue4
小江村儿的文杰2 天前
UE4 PSO介绍三:认识.scl.csv
ue4
小江村儿的文杰3 天前
UE4 PSO介绍二:认识.rec.upipelinecache
ue4·pso
小江村儿的文杰4 天前
UE4 PSO介绍一:PSO的定义(编辑中)
ue4·pso
njsgcs4 天前
ue4 我的ai要用到的一下方法汇总 + ue的ai编程助手
ue4
神米米4 天前
Maya快速安装UE4 布料权重绘制插件PhysX导出apx
游戏引擎·ue4·maya
njsgcs5 天前
ue4 开放exec接口 vscode mcp铺垫 unreal.register_slate_post_tick_callback
ide·vscode·ue4
每天回答3个问题5 天前
Lua 函数教程
开发语言·ue5·ue4·lua
每天回答3个问题6 天前
Lua Table(表)
开发语言·ue4·lua·虚幻引擎
小江村儿的文杰6 天前
UE4 Cook流程中IdenticalUncookedPackages的含义,以及一种“资源未打包”情形的解释
ue4·cook