应用场景:
在UE启动过程中,使用到在引擎中初始化的变量,那么就需要确保在引擎初始化之后再使用这个变量(自动调用)。UE提供了一个委托,可以满足我们的需求。
使用方法:
//FPXSystemDelegate_OnPostEngineInit就是需要再引擎初始化之后才能调用的代码
FCoreDelegates::OnPostEngineInit.AddStatic(&FPXSystemDelegate_OnPostEngineInit);
添加到OnPostEngineInit中之后,引擎初始化完成会自动调用这个函数
拓展 :
也可以在OnPostEngineInit中添加另一个委托OnPostEngineInitSub,然后使用这个委托 OnPostEngineInitSub添加函数
头文件声明:
struct PXRUNTIME_API FPXSystemDelegate
{
DECLARE_MULTICAST_DELEGATE(FPXOnPostEngineInit);
static FPXOnPostEngineInit OnPostEngineInit;
struct FPXSystemDelegateStub
{
FDelegateHandle OnPostEngineInitHandle;
void Initialize();
void Uninitialize();
void PXOnPostLoadMapWithWorld(UWorld* World);
void PXOnWorldCleanup(UWorld* World, bool bSessionEnded, bool bCleanupResources);
};
}
源文件:
FPXSystemDelegate::FPXOnPostEngineInit FPXSystemDelegate::OnPostEngineInit;
static void FPXSystemDelegate_OnPostEngineInit()
{
FPXSystemDelegate::OnPostEngineInit.Broadcast();
}
void FPXSystemDelegate::FPXSystemDelegateStub::Initialize()
{
//FCoreDelegates
OnPostEngineInitHandle = FCoreDelegates::OnPostEngineInit.AddStatic(&FPXSystemDelegate_OnPostEngineInit);
}
void FPXSystemDelegate::FPXSystemDelegateStub::Uninitialize()
{
FCoreDelegates::OnPostEngineInit.Remove(OnPostEngineInitHandle);
}