概念

  • 定时执行操作,可执行一次,或循环执行直到手动终止
  • 定时器在全局定时器管理器(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

    句柄若无效,返回-1

    GetWorldTimerManager().GetTimerRate(SpawnerHandle);

获取经过时间和剩余时间

  • GetTimerElapsed

    句柄若无效,返回-1

  • GetTimerRemaining

    句柄若无效,返回-1

    GetWorldTimerManager().GetTimerElapsed(SpawnerHandle);
    GetWorldTimerManager().GetTimerRemaining(SpawnerHandle);

参考

最新文章

  1. blue and red ball
  2. 学习SVG系列(3):SVG Stroke属性
  3. PHP输出表格的方法
  4. IO的阻塞、非阻塞、同步、异步
  5. Pyqt5 实时图像滚动
  6. 201521123103 《java学习笔记》 第十三周学习总结
  7. Struts2------Result处理&amp;获取页面请求参数&amp;API
  8. 1028阿里RDS如何恢复云数据库MySQL的备份文件到自建数据库
  9. 网络3-Jsonp
  10. 报错:Exception in thread &quot;main&quot; com.typesafe.config.ConfigException$UnresolvedSubstitution
  11. 如果你喜欢python,那你迟早会喜欢上julia的!
  12. jQuery-切换2
  13. Windows android appium python3 环境搭建
  14. Linux 串口、usb转串口驱动分析(2-1) 【转】
  15. 阿里云centos中mysql的安装及一些常识知识
  16. js下载图片
  17. BZOJ2535: [Noi2010]Plane 航空管制2(拓扑排序 贪心)
  18. INSPIRED启示录 读书笔记 - 第14章 产品评审团
  19. IOS @property的参数说明
  20. 邁向IT專家成功之路的三十則鐵律 鐵律十二:IT人養生之道-德行

热门文章

  1. Aggressor Script 开发-Powershell 免杀
  2. docker入门及常用命令
  3. Redis的配置文件redis.conf的解析
  4. shp平滑处理
  5. AI学习1
  6. input 只可以输入时分秒
  7. ORACLE 12C Identity Column(身份列) 实现自增长字段
  8. ecshop刷新页面出现power by ecshop和链接的解决办法
  9. 从浏览器渲染层面解析css3动效优化原理
  10. 关于panic ,主协程的recover 是无法获取 子协程的panic 的