【UE4 C++】定时器 Timer 与事件绑定
2024-08-31 15:11:18
概念
- 定时执行操作,可执行一次,或循环执行直到手动终止
- 定时器在全局定时器管理器(FTimerManager 类型)中管理。全局定时器管理器存在于 游戏实例 对象上以及每个 场景 中
- 定时器需要绑定委托或函数,作为执行体。这些函数将填充 FTimerHandle 定时器句柄
- FTimerHandle 支持 暂停、恢复倒计时;查询或更改剩余时间;取消定时器
- 设置定时器的函数
- SetTimer 定时执行
- SetTimerForNextTick 下一帧执行
- 使用案例
- 定时 SpawnActor
- 定时销毁
- buff持续,如霸体、持续伤害
设置定时器
SetTimer
方法支持 FTimerDelegate 委托,可以扩展使用 Lambda 表达式
GetWorldTimerManager()
等价于GetWorld()->GetTimerManager()
template<class UserClass>
void SetTimer
(
FTimerHandle & InOutHandle,
UserClass * InObj,
typename FTimerDelegate::TUObjectMethodDelegate_Const< UserClass >::FMethodPtr InTimerMethod,
float InRate,
bool InbLoop,
float InFirstDelay
)
代码实现
FTimerHandle SpawnerHandle; GetWorldTimerManager().SetTimer(SpawnerHandle, this, &AEnenmySpawner::SpawnEnemy, 5.0f, true); void AEnenmySpawner::SpawnEnemy()
{
GEngine->AddOnScreenDebugMessage(-1, 1.0f, FColor::Red, "Spawn");
}
清空定时器
ClearTimer
ClearAllTimersForObject
清空与特定对象关联的所有定时器GetWorldTimerManager().ClearTimer(SpawnerHandle); // 参数传入一个对象,本例以 this 举例
GetWorldTimerManagerr().ClearAllTimersForObject(this);
暂停和恢复
PauseTimer
UnPauseTimer
GetWorldTimerManager().PauseTimer(SpawnerHandle);
GetWorldTimerManager().UnPauseTimer(SpawnerHandle);
GetWorldTimerManager().IsTimerPaused(SpawnerHandle);
判断是否活跃且未暂停
IsTimerActive
GetWorldTimerManager().IsTimerActive(SpawnerHandle);
获取定时器速率
GetTimerRate
句柄若无效,返回-1GetWorldTimerManager().GetTimerRate(SpawnerHandle);
获取经过时间和剩余时间
GetTimerElapsed
句柄若无效,返回-1GetTimerRemaining
句柄若无效,返回-1GetWorldTimerManager().GetTimerElapsed(SpawnerHandle);
GetWorldTimerManager().GetTimerRemaining(SpawnerHandle);
参考
最新文章
- blue and red ball
- 学习SVG系列(3):SVG Stroke属性
- PHP输出表格的方法
- IO的阻塞、非阻塞、同步、异步
- Pyqt5 实时图像滚动
- 201521123103 《java学习笔记》 第十三周学习总结
- Struts2------Result处理&;获取页面请求参数&;API
- 1028阿里RDS如何恢复云数据库MySQL的备份文件到自建数据库
- 网络3-Jsonp
- 报错:Exception in thread ";main"; com.typesafe.config.ConfigException$UnresolvedSubstitution
- 如果你喜欢python,那你迟早会喜欢上julia的!
- jQuery-切换2
- Windows android appium python3 环境搭建
- Linux 串口、usb转串口驱动分析(2-1) 【转】
- 阿里云centos中mysql的安装及一些常识知识
- js下载图片
- BZOJ2535: [Noi2010]Plane 航空管制2(拓扑排序 贪心)
- INSPIRED启示录 读书笔记 - 第14章 产品评审团
- IOS @property的参数说明
- 邁向IT專家成功之路的三十則鐵律 鐵律十二:IT人養生之道-德行