教你如何在Slate里面如何使用ActiveTimer
.h文件UCLASS()
class Test_API UMyUMG : public UUSerWidget
{
GENERATED_BODY()
public:
/*请求使用ActiveTimer,相当于注册了一个定时器的函数*/
void RequestUseActiveTimer();
private:
/*开始处理ActiveTimer,调用注册的定时器函数*/
EActiveTimerReturnType HandleActiveTimer(double InCurrentTime, float InDeltaTime);
/*取消ActiveTimer,取消注册的定时器函数*/
void CancelActiveTimer();
/** The handle to the active timer,定时器函数的指针 */
TWeakPtr<FActiveTimerHandle> ActiveTimerHandle;
/*测试用的一个计数变量,等于50的时候,停止执行处理函数*/
int32 Count;
};
.CPP文件
void UMyUMG::RequestUseActiveTimer()
{
if (!ActiveTimerHandle.IsValid())
{
/*获取UMG里的一个SWidget*/
TSharedPtr<SWidget> ThisPtr = GetCachedWidget();
/*给这个SWidget注册一个定时器执行函数,参数0.f表示多久后执行注册的函数*/
ActiveTimerHandle = ThisPtr->RegisterActiveTimer(0.f, FWidgetActiveTimerDelegate::CreateUObject(this, &UMyUMG::HandleActiveTimer));
}
}
void UMyUMG::CancelActiveTimer()
{
if (ActiveTimerHandle.IsValid())
{
/*获取UMG里的一个SWidget*/
TSharedPtr<SWidget> ThisPtr = GetCachedWidget();
/*把这个SWidget注册的函数给取消注册了*/
ThisPtr->UnRegisterActiveTimer(ActiveTimerHandle.Pin().ToSharedRef());
}
}
/*执行期间的逻辑都在这里执行*/
EActiveTimerReturnType UMyUMG::HandleActiveTimer(double InCurrentTime, float InDeltaTime)
{
/*如果Count等于50就停止计数执行了*/
if ( 50 ==Count )
{
return EActiveTimerReturnType::Stop;
}
/*如果Count不等于50就继续计数和执行该函数*/
++ Count;
return EActiveTimerReturnType::Continue;
}
cool~~~~~~~~~~~ 棒棒棒!!! cool~~~~~~~~~~~ 我去这个太好了啊 看到C++的我,瞬间吓尿了 虽然自信对蓝图还有点心得,但是C++完全看不懂了。。。。 C++完全看不懂
感谢楼主分享
页:
[1]