源码理解 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);
    }
};
相关推荐
一个响当当的名号8 天前
lectrue4 数据库存储
ue4
陈友松11 天前
UE5运行时操作撤销系统插件
ue5·ue4·运行时回退撤销
北冥没有鱼啊11 天前
UE5 离谱问题,角色动画不播放
游戏·ue5·ue4·游戏开发·虚幻
WinstonJQ13 天前
AirSim无人机仿真入门(一):实现无人机的起飞与降落
python·机器人·游戏引擎·ue4·无人机
小江村儿的文杰15 天前
UE4 PSO介绍六:PSO与Shader编译的关系
ue4
小江村儿的文杰15 天前
UE4 PSO介绍五:Build PSO
ue4
二DUAN帝17 天前
像素流与UE通信
前端·javascript·css·ue5·html·ue4·html5
归真仙人18 天前
【UE】UMG安卓相关问题
android·ue5·游戏引擎·ue4·虚幻·unreal engine
小江村儿的文杰22 天前
UE4 PSO介绍四:PSO Precache
ue4
小江村儿的文杰23 天前
UE4 PSO介绍三:认识.scl.csv
ue4