函数声明
UE4中有两种函数, 一种是传统的C++函数, 一种是UFunction. UFunction通过加入一些描述符来支持一些特殊功能
UFUNCTION([specifier, specifier, ...], [meta(key=value, key=value, ...)])
ReturnType FunctionName([Parameter, Parameter, ...])
主要有几种应用:
函数说明符
元数据说明符
函数参数说明符
委托(Delegate)
DECLARE_DELEGATE_OneParam( FStringDelegate, FString );
FSharedRef< FLogWriter > LogWriter( new FLogWriter() );
WriteToLogDelegate.BindSP( LogWriter, &FLogWriter::WriteToLog );
WriteToLogDelegate.Execute( TEXT( "Delegates are spiffy!" ) );
建议Delegate传递时使用引用, 避免传值引起内存分配
multi-cast与event的区别只有声明event的类本身可以调用event的Broadcast, IsBound, Clear函数
dynamic delegate是用函数名进行绑定, 所以可以进行序列化, 但速度相对较慢
定时器(Timer)
GetWorldTimerManager().SetTimer(this, &AMatineeActor::CheckPriorityRefresh, 1.0f, true);
GetWorldTimerManager().ClearTimer(this, &AMatineeActor::CheckPriorityRefresh);
GetWorldTimerManager().IsTimerActive(this, &APlayerController::DelayedPrepareMapChange)
Timer不是线程安全的, 只能在游戏线程使用