**UE4_Timer_定时器**

Timer这个东西在游戏开发里太常用了,大到游戏世界的驱动,小到物体的状态变迁,均有timer的身影。游戏世界虽说是个虚拟世界,但总归是需要时间维度的。在UE4中,Timer的基本作用就是在固定间隔内重复或单次执行某些操作。具体到应用,常见的就是Delay、固定频率刷新某个操作。

UE4中所有的Timer都是由全局类FTimerManager管理。在AActor之外,可以指定任意类型的委托。FTimerManager提供一些函数用来操作Timer,同时这些函数也能用于Timer的委托中,比如可以在一个Timer的委托里新建(删除)另一个Timer。

AActor::GetWorldTimerManager()用来获取当前世界的TimerManager实例。然后通过这个实例调用函数就可以控制Timer了。

一般来讲,你可能还需要一个FTimerHandle来指定具体的Timer。
SetTimer
为Timer指定回调函数、间隔时间,是否循环等参数,并启动该Timer,使其开始计时。该函数也可用来重设已有的Timer,此时,计时也将重新开始。

在Blueprint中常见的Delay节点在C++就需要用这个函数指定一个一次性的Timer。
ClearTimer
销毁清理指定的Timer,使其不再计时,当然也不会再回调。将SetTimer的间隔时间参数设为<0.f有同样的效果。
PauseTimer
暂停指定的Timer,此时Timer停止计时但会保存已经过的时间和剩余时间,直到恢复计时。
UnPauseTimer
激活已暂停的Timer。
IsTimerActive
获取指定Timer的当前状态(运行/暂停)
GetTimerRate
获得指定Timer的当前频率(就是时间间隔参数)。
GetTimerElapsed
获得指定Timer的当前间隔内已经计时的时长
GetTimerRemaining
获得指定Timer当前间隔内的剩余时长

已经计时的时长 + 剩余时长 = 间隔时间

常用的接口差不多就这些,更多更详细的可以参阅API文档。比如各种SetTimer的重载,更多Timer的状态信息。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
void pwm_capture_timer_config(void) { /* TIMER2 configuration: input capture mode ------------------- the external signal is connected to TIMER2 CH0 pin (PB4) the rising edge is used as active edge the TIMER2 CH0CV is used to compute the frequency value ------------------------------------------------------------ */ timer_ic_parameter_struct timer_icinitpara; timer_parameter_struct timer_initpara; rcu_periph_clock_enable(RCU_TIMER0); timer_deinit(TIMER0); /* TIMER1 configuration */ timer_initpara.prescaler = 119; timer_initpara.alignedmode = TIMER_COUNTER_EDGE; timer_initpara.counterdirection = TIMER_COUNTER_UP; timer_initpara.period = 65535; timer_initpara.clockdivision = TIMER_CKDIV_DIV1; timer_initpara.repetitioncounter = 0; timer_init(TIMER0,&timer_initpara); /* TIMER1 configuration */ /* TIMER1 CH2 input capture configuration */ timer_icinitpara.icpolarity = TIMER_IC_POLARITY_FALLING; timer_icinitpara.icselection = TIMER_IC_SELECTION_DIRECTTI; timer_icinitpara.icprescaler = TIMER_IC_PSC_DIV1; timer_icinitpara.icfilter = 0x0; timer_input_capture_config(TIMER0,TIMER_CH_1,&timer_icinitpara); nvic_irq_enable(TIMER0_Channel_IRQn, 1, 1); timer_primary_output_config(TIMER0, ENABLE); /* auto-reload preload enable */ timer_auto_reload_shadow_enable(TIMER0); /* clear channel 0 interrupt bit */ timer_interrupt_flag_clear(TIMER0,TIMER_INT_FLAG_CH1); /* channel 0 interrupt enable */ timer_interrupt_enable(TIMER0,TIMER_INT_CH1); /* TIMER1 counter enable */ timer_enable(TIMER0); }
最新发布
06-06
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值