应用场景:
在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()
{//FCoreDelegatesOnPostEngineInitHandle = FCoreDelegates::OnPostEngineInit.AddStatic(&FPXSystemDelegate_OnPostEngineInit);
}void FPXSystemDelegate::FPXSystemDelegateStub::Uninitialize()
{FCoreDelegates::OnPostEngineInit.Remove(OnPostEngineInitHandle);}