UE4定时器操作

定时器官方文档:文档地址

总结后代码如下:

//定义定时器Handle
FTimerHandle TimerHandle;

//定义定时器管理器
FTimerManager &TimerMgr = GEngine->GetWorldContextFromGameViewport(GEngine->GameViewport)->World()->GetTimerManager();
if (TimerMgr.IsTimerActive(TimerHandle) || TimerMgr.IsTimerPaused(TimerHandle))
{
    //重置定时器
	TimerMgr.ResetTimer(TimerHandle);
}
else
{
	TimerMgr.SetTimer(TimerHandle,
        //定时器回调函数
		FTimerDelegate::CreateLambda(
			[this]()
	        {          
		        GEngine->GetWorldContextFromGameViewport(GEngine->GameViewport)-            >World()->GetTimerManager().ClearTimer(TimerHandle);
	        }
		),
		3.0f,//3秒后执行回调函数
		false//是否循环执行
		);
}

:UE4中的代理创建方式

DECLARE_DELEGATE(DelegateWithoutParam);

DelegateWithoutParam OnClick;

OnClick.BindUObject(this, &ACameraCharacter::OnBtnClick); //this只能是继承自UObject的类
OnClick.BindUFunction(this, "BP_DelegateUFunction"); //this中的蓝图中的方法
OnClick.BindSP(mTestPtr.Get(), &Test::Output) //继承自TShareFromThis<XXX>的类
OnClick.BindStatic(&StaticFunc); //静态方法
OnClick.BindLambda(LambdaFunc); //lambda表达式(匿名函数)

博客地址:blog.liujunliang.com.cn

猜你喜欢

转载自blog.csdn.net/qq_33747722/article/details/81211619