UE5 C++(十五)— TimerHandle(定时器)的使用

文章目录

    • 设置定时器
      • 声明FTimerHandle
      • 定义执行函数
      • 设置定时器
    • 清除定时器

定时器(Timer) 可用于执行延迟类型的操作,或让某些操作在一段时间内重复执行。

设置定时器

定时器的设置只需三步即可完成:声明定时器句柄 FTimerHandle、定义执行函数、设置定时器,其中前两步是第三步的预备工作。

声明FTimerHandle

首先是声明定时器句柄 FTimerHandle,代码实现如下:

#include "TimerManager.h"UCLASS()
class DEMO_API AMyCharacter : public ACharacter, public IMyInterface
{GENERATED_BODY()public:// Sets default values for this character's propertiesAMyCharacter();protected:// Called when the game starts or when spawnedvirtual void BeginPlay() override;public:// Called every framevirtual void Tick(float DeltaTime) override;// Called to bind functionality to inputvirtual void SetupPlayerInputComponent(class UInputComponent *PlayerInputComponent) override;//声明定时器变量FTimerHandle TimerHandle;void TimerFunction();
};

定义执行函数

void AMyCharacter::TimerFunction()
{UE_LOG(LogTemp, Warning, TEXT("TimerFunction"));GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("TimerFunction"));
}

设置定时器

注意:不可以在Actor的构造函数中设置定时器

// Called when the game starts or when spawned
void AMyCharacter::BeginPlay()
{Super::BeginPlay();// 设置定时器 5秒后执行TimerFunction函数,每5秒执行一次GetWorldTimerManager().SetTimer(TimerHandle, this, &AMyCharacter::TimerFunction, 5.f, true);
}

SetTimer() 各个参数的作用如下:

  • InOutHandle:定时器绑定的句柄,如果该句柄已指向其他定时器,则取消这个其他定时器;
  • InObj:调用执行函数的对象;
  • InTimerMethod:定时器所执行的函数;
  • InRate:函数执行的时间间隔,如果<=0,则清除现存定时器,即 InOutHandle 所绑定的定时器;
  • InbLoop:该定时器是否循环,若不循环则只执行一次;
  • InFirstDelay:从设置定时器到执行定时器的时间间隔,若<0,则使用 InRate 代替。

编译之后,运行打印结果
在这里插入图片描述

清除定时器

设置定时器后,一定不要忘了清除定时器。这就像申请了资源,一定要归还一样。取消定时器的话,建议直接使用ClearTimer(),其用法示例如下:

if (TimeHandle.IsValid()){GetWorldTimerManager().ClearTimer(TimerHandle);}

清除定时器可在 Actor 的 EndPlay() 函数中执行,但在其他地方也是可以的,只是不要忘记清除定时器。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/336777.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

51单片机介绍

1 单片机简介 单片机&#xff0c;英文Micro Controller Unit&#xff0c;简称MCU 内部集成了CPU、RAM、ROM、定时器、中断系统、通讯接口等一系列电脑的常用硬件功能 单片机的任务是信息采集&#xff08;依靠传感器&#xff09;、处理&#xff08;依靠CPU&#xff09;和硬件设…

pgsql中epoch用法

问题描述 提示&#xff1a;这里描述项目中遇到的问题&#xff1a; 昨天又被叫回来加班,説是数据问题,又回来加班搞,到了以后发现数据没问题,那就是查询接口的事了,写查询接口的人用时间戳去查询,明明直接可以直接用日期查询,非得改成时间戳查询,结果还是有问题,接下来复盘一下…

【教学类-45-01】X-Y之间的“三连加“题(a+b+c=)

作品展示&#xff1a; 背景需求&#xff1a; 我常去的大4班孩子们基本都适应了0-5之间的加法题&#xff0c;做题速度极快。 为了增加“花样”&#xff0c;吸引幼儿参与&#xff0c;修改参数&#xff0c;从二连加12变为三连加111。 素材准备: 代码重点 代码展示 X-Y 之间的3…

vue/vue3/js来动态修改我们的界面浏览器上面的文字和图标

前言&#xff1a; 整理vue/vue3项目中修改界面浏览器上面的文字和图标的方法。 效果&#xff1a; vue2/vue3: 默认修改 public/index.html index.html <!DOCTYPE html> <html lang"en"><head><link rel"icon" type"image/sv…

14:00进去,14:05就出来了,面试问的有点变态。。

刚从小厂出来&#xff0c;没想到在另一家公司我又寄了。 在这家公司上班&#xff0c;每天都要加班&#xff0c;但看在钱给的比较多的份上&#xff0c;也就不太计较了。但万万没想到一纸通知&#xff0c;所有人不准加班了&#xff0c;不仅加班费没有了&#xff0c;薪资还要降40…

Java中内存模型

参数传递图解与结论 通过上面的两段程序可以得出如下结论&#xff1a;根据内存去解释&#xff0c;局部变量随方法栈的弹出而消失&#xff1b; 当调用方法时&#xff0c;如果传入的数值为基本数据类型&#xff08;包含String类型&#xff09;&#xff0c;形式参数的改变对实际…

前端常用6种数据加密方式的使用(最详解)

目录 前言 一、6种常用加密方案 1.Base64加密 2.MD5加密&#xff08;不可逆&#xff09; 3.sha256加密 4.sha1加密&#xff08;相比于MD5 安全性高&#xff0c;但是 速度慢&#xff09; 5.AES加密 6.字符串的编码和解码 二、结语 往期回顾 前言 相信大家在工作或面试…

苹果电脑Markdown文本编辑Typora mac功能介绍

Typora mac是一款跨平台的Markdown编辑器&#xff0c;支持Windows、MacOS和Linux操作系统。它具有实时预览功能&#xff0c;能够自动将Markdown文本转换为漂亮的排版效果&#xff0c;让用户专注于写作内容而不必关心格式调整。Typora Mac版除了支持常见的Markdown语法外&#x…

【JVM】执行引擎 Execution Engine

一、简介 执行引擎是Java虚拟机&#xff08;JVM&#xff09;的核心组成部分之一&#xff0c;它的主要任务是负责装载字节码到其内部。由于字节码并不能够直接运行在操作系统之上&#xff0c;因此需要将字节码指令解释/编译为对应平台的本地机器指令&#xff0c;简单来说JVM的执…

2024年湖北建筑类中级职称申报哪里有?

武汉、湖北省直、黄石、黄冈、宜昌、襄阳、恩施、荆门、荆州、孝感、咸宁、十堰、神龙架、天门、潜江、仙桃、汉口、汉阳、武昌、东湖高新等湖北所有地方职称都可以申报代办。 职称无非就是一些申报条件、申报时间、申报流程、提交资料、评审答辩等相关问题&#xff0c;这些了…

09、Kafka ------ 通过修改保存时间来删除消息(retention.ms 配置)

目录 通过修改保存时间来删除消息★ 删除指定主题的消息演示1、修改kafka检查过期消息的时间间隔2、修改主题下消息的过期时间3、查看修改是否生效4、先查看下主题下有没有消息5、添加几条消息看效果6、查看消息是否被删除 ★ 恢复主题的retention.ms配置1、先查看没修改前的te…

FPGA之按键消抖

目录 1.原理 2.代码 2.1 key_filter.v 2.2 tb_key_filter.v 1.原理 按键分为自锁式按键和机械按键&#xff0c;图左边为自锁式按键 上图为RS触发器硬件消抖&#xff0c;当按键的个数比较多时常常使用软件消抖。硬件消抖会使用额外的器件占用电路板上的空间。 思路就是使用延…