ue4-定时器
- c++ 和 蓝图 中定时器的使用
- 之前有写过c++的,现在用 markdown 整理下c++和蓝图的
1. 蓝图中的使用
- 开始,可以通过 事件 或 事件名、方法名 两个api起定时器 
  
- 暂停 
  
- 唤醒 
  
- 停止并清除 
  
- 其他api - 是否存在、激活、暂停 
  
- 已逝时间,这个周期开始到此刻的时间 
  
- 剩余时间,此刻到周期结束的时间(结束时就会触发时间) 
  
 
- 参考:https://docs.unrealengine.com/latest/INT/Gameplay/HowTo/UseTimers/Blueprints/ 
2. C++中的使用
- 开始与清除 - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12- FTimerHandle mTimer; //起个 handle 
 auto lambda = [&]()->void {
 mLeftTime -= 1;
 if (mLeftTime < 5)
 GWorld->GetTimerManager().ClearTimer(mTimer); //停止并清除定时器
 };
 auto dlg = FTimerDelegate::CreateLambda(lambda); //动态代理的绑定,还有其他几种方式,下面有贴链接
 //auto dlg = FTimerDelegate::CreateUObject(this, &AMyActor::TimerCount);
 GWorld->GetTimerManager().SetTimer(mTimer, dlg, 1.0f, true);
- 其他api - 1 
 2
 3
 4
 5
 6
 7- GWorld->GetTimerManager().PauseTimer(mTimer); //暂停 
 GWorld->GetTimerManager().UnPauseTimer(mTimer); //唤醒
 float elapsed = GWorld->GetTimerManager().GetTimerElapsed(mTimer); //已逝时间
 float elapsed = GWorld->GetTimerManager().GetTimerRemaining(mTimer); //剩余时间
 bool isActive = GWorld->GetTimerManager().IsTimerActive(mTimer); //激活
 bool isPaused = GWorld->GetTimerManager().IsTimerPaused(mTimer); //暂停
 bool isExist = GWorld->GetTimerManager().TimerExists(mTimer); //存在
- 动态代理绑定的参照这里:http://blog.csdn.net/yangxuan0261/article/details/52097699 
- 参考(貌似比较旧的api,不适4.14版本):https://docs.unrealengine.com/latest/INT/Programming/UnrealArchitecture/Timers/