参考

定时器在全局定时器管理器(FTimerManager类)中管理,对于每个实例Uobject和场景都会有全局定时器管理器,一般来说通过SetTimer和SetTimerForNextTick来设置定时器。SetTimer具有loop属性。

访问使用定时器

AActor类对象:直接使用GetWorldTimerManager()函数,AActor::GetWorldTimerManager()相当于在UWorld中调用GetTimerManager()函数。

使用全局定时器管理器:UGameInstance::GameTimerManager(),全局管理器可以用于与任何特定场景的存在没有相关性或依赖性的函数调用

设置和清空定时器

FTimerManager类中的SetTimer函数可以将定时器设置为在一段时间后调用函数或委托,也可以设置对函数的Loop。需要注意的是在这些被调用的函数或者委托的定义中需要添加定时器句柄(FTimerHandle类)需要在头文件声明。定时器句柄主要用于暂停(或恢复)倒计时,查询或更改剩余时间,以及取消定时器。

还可以通过直接设置定时器在下一帧运行:SetTimerForNextTick,该方法不需要使用定时器句柄。

清空定时器的方法:将FTimerHandle类变量传入FTimerManager函数的ClearTimer中,使得句柄对该定时器失效,并且可以使用其去管理其他定时器。清空操作需要在被调用函数或者委托中进行。

如果想清空与特定对象关联的所有定时器可以通过ClearAllTimersForObject方法。

以小于等于0的速率调用SetTimer等效于调用ClearTimer

//.h
FTimerHandle MemberTimerHandle; //.cpp
void AMyActor::BeginPlay()
{
Super::BeginPlay();
// 从现在开始两秒后,每秒调用一次RepeatingFunction。
GetWorldTimerManager().SetTimer(MemberTimerHandle, this, &AMyActor::RepeatingFunction, 1.0f, true, 2.0f);
} void AMyActor::RepeatingFunction()
{
// 调用该函数达到足够次数后,清空定时器。
if (--RepeatingCallsRemaining <= 0)
{
GetWorldTimerManager().ClearTimer(MemberTimerHandle);
// MemberTimerHandle现在可以复用于其他任意定时器。
}
// 在此进行一些操作...
}

暂停和恢复定时器

PauseTimer:定时器句柄来暂停正在运行的定时器。这样可阻止定时器执行其函数调用,但经过的时间和剩余时间将保持暂停时的状态

UnPauseTimer:将某个暂停的定时器恢复

定时器信息

FTimerManager类定时器管理器可以用于获取某个定时器的信息(速率,经过的时间和剩余时间)

  1. IsTimerActive:判断该定时器是否活跃且没有被暂停
  2. GetTimerRate:根据定时器句柄获取定时器的当前速率(两次激活时间间隔),如果句柄无效,返回-1
  3. GetTimerElapsed和GetTimerRemaing:同样需要一个定时器句柄,返回经过时间和剩余时间,如果句柄无效,返回-1

    定时器的经过时间和剩余时间之和应该等于定时器的速率

UE4Gameplay定时器的更多相关文章

  1. Objective-C三种定时器CADisplayLink / NSTimer / GCD的使用

    OC中的三种定时器:CADisplayLink.NSTimer.GCD 我们先来看看CADiskplayLink, 点进头文件里面看看, 用注释来说明下 @interface CADisplayLin ...

  2. 微信小程序中利用时间选择器和js无计算实现定时器(将字符串或秒数转换成倒计时)

    转载注明出处 改成了一个单独的js文件,并修改代码增加了通用性,点击这里查看 今天写小程序,有一个需求就是用户选择时间,然后我这边就要开始倒计时. 因为小程序的限制,所以直接选用时间选择器作为选择定时 ...

  3. [Java定时器]用Spring Task实现一个简单的定时器.

    今天做一个项目的的时候需要用到定时器功能.具体需求是: 每个月一号触发一次某个类中的方法去拉取别人的接口获取上一个月份车险过期的用户.如若转载请附上原文链接:http://www.cnblogs.co ...

  4. Node+fs+定时器(node-schedule)+MySql

    目标:将本人写博客时候的截图保存到桌面的图片 执行保存到指定文件进行整理 并写入数据库 先看最终的目录结构: package.json文件: { "name": "zqz ...

  5. 深入理解定时器系列第一篇——理解setTimeout和setInterval

    × 目录 [1]setTimeout [2]setInterval [3]运行机制[4]作用[5]应用 前面的话 很长时间以来,定时器一直是javascript动画的核心技术.但是,关于定时器,人们通 ...

  6. 前端开发:setTimeout与setInterval 定时器与异步循环数组

    前端开发:setTimeout与setInterval 定时器与异步循环数组 前言: 开通博客园三个月以来,随笔记录了工作中遇到的大大小小的难题,也看过无数篇令人启发的文章,我觉得这样的环境是极好的, ...

  7. 转载---javascript 定时器总结

    转载:http://www.jb51.net/article/40193.htm JS里设定延时: 使用SetInterval和设定延时函数setTimeout 很类似.setTimeout 运用在延 ...

  8. Node中的定时器详解

    在大多数的业务中,我们都会有一些需求,例如几秒钟实现网页的跳转,几分钟对于后台数据进行清理,node与javascript都具有将代码延迟一段时间的能力.在node中可以使用三种方式实现定时功能:超时 ...

  9. spring定时器,定时器一次执行两次的问题

    Spring 定时器 方法一:注解形式 配置文件头加上如下: xmlns:task="http://www.springframework.org/schema/task" htt ...

  10. setTimeout和setInterval定时器使用详解测试

    var len=4; while(len--){ var time=setTimeout(function(){ console.log(len); },0); console.log(time); ...

随机推荐

  1. [Android 逆向]绕过小米需插卡安装apk限制

    1. 确保自己手机是root的了 2. 给手机安装busybox,使可以用vi编辑文件 安装方法: 0. adb shell getprop ro.product.cpu.abi 获得 cpu架构信息 ...

  2. [BUUCTF][WEB][极客大挑战 2019]PHP 1

    打开靶机URL 看到字面提示 因为每次猫猫都在我键盘上乱跳,所以我有一个良好的备份网站的习惯不愧是我!!! 说明该网站有备份,说不定放在了Http服务器的某个目录下 那么这里我们可以用dirsearc ...

  3. 开源软件CVE_Search的配置与使用(详细)

    目录 项目介绍 环境配置 初始化cve_search 使用cve_search 简介 CVE: https://baike.baidu.com/item/CVE/9483464?fr=aladdin ...

  4. 为产品的一堆Visual Studio解决方案引入Directory.Build.props

    为什么需要Directory.Build.props? 一个产品有了多个甚至几十个解决方案之后,每个解决方案里面的项目可能会引用一个dll包的不同版本,因此需要集中管理dll包的版本号. .NET的D ...

  5. 【Azure Redis 缓存】Redis性能指标之Server Load

    Server Load描述 在Redis的官方介绍中,Server Load指标是Redis 服务器忙于处理消息并且非空闲等待消息的周期百分比. 如果此计数器达到 100,则意味着 Redis 服务器 ...

  6. Taurus.MVC WebMVC 入门开发教程7:部分视图和页面片段(结束篇)

    本系列的目录大纲为: Taurus.MVC WebMVC 入门开发教程1:框架下载环境配置与运行 Taurus.MVC WebMVC 入门开发教程2:一个简单的页面呈现 Taurus.MVC WebM ...

  7. [java] Tomcat 启动失败 Error: error while reading constant pool for .class: unexpected tag at #

    表现 公司服务器今天启动tomcat失败, 看catalina.out文件里面报错 java.lang.ClassFormatError: Unknown constant tag 101 in cl ...

  8. 当未指定且存在多个构造器,实例化对象时Spring如何选择?

    前言 在前面的讲解中,我们了解了如何获取构造器.当只有一个符合条件的构造器时,自然会选择它作为初始化的构造器.然而,在上一节中,我们遇到了一种特殊情况:当有多个符合条件的构造器时,返回的是一个数组.在 ...

  9. XAF Blazor 中使用 Blazor 组件

    前言 文章的标题是不是感觉有点奇怪,但实际我们在XAFBlazor中使用Blazor组件是很繁琐的,我们需要将Blazor组件封装成属性编辑器(PropertyEditor),再用非持久化对象(Non ...

  10. java后端数据接收

    restful风格 @RequestMapping("/getTeacherPage/{current}/{limit}") public List<WorkOrder> ...