说说关于UE中的定时器SetTimer

2024-02-07 03:52
文章标签 定时器 ue settimer

本文主要是介绍说说关于UE中的定时器SetTimer,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

GetWorldTimerManager().SetTimer 是在Unreal Engine中用于设置定时器的方法。定时器在游戏开发中用于执行某个函数或代码块,可以在指定的时间间隔后触发。这个方法通常在UE的Actor或GameMode等类中被调用。下面我们来详细讲解这个方法的用法:

FTimerHandle MyTimerHandle; 
// 声明一个计时器句柄,用于标识和管理计时器 
float Delay = 2.0f; 
// 延迟时间,以秒为单位 
bool bLoop = false; 
// 是否循环执行 
float Interval = 1.0f; 
// 循环执行时的时间间隔,以秒为单位 
GetWorldTimerManager().SetTimer(MyTimerHandle, this, &AMyActor::MyFunction, Delay, bLoop, Interval);

在这个例子中,我们假设在一个名为 AMyActor 的Actor类中使用了 GetWorldTimerManager().SetTimer 方法。以下是对这个方法的详细解释:

  • MyTimerHandle 一个 FTimerHandle 类型的变量,用于标识和管理计时器。通过此句柄,可以取消或操作计时器。

  • this 作为计时器的拥有者,通常是调用该方法的类的实例。

  • &AMyActor::MyFunction 指定要在计时器触发时执行的函数或方法。在这个例子中,假设有一个名为 MyFunction 的成员函数。

  • Delay 延迟时间,以秒为单位。表示从调用 SetTimer 到第一次触发计时器之间的时间间隔。

  • bLoop 一个布尔值,表示是否循环执行。如果为 true,计时器将在每次间隔结束后重新开始计时,直到被手动取消。如果为 false,计时器只会执行一次。

  • Interval 循环执行时的时间间隔,以秒为单位。仅在 bLooptrue 时有效,表示每次循环执行的时间间隔。

通过调用 GetWorldTimerManager().SetTimer 方法,可以在UE中轻松设置和管理计时器,实现延时执行或定时循环执行的逻辑。需要注意的是,计时器的触发是在游戏世界的时间轴上进行的,因此游戏的暂停等操作也会影响计时器的行为。

有的童鞋可能会有疑惑,定时器为什么要有个“拥有者”呢?

以下是一些理解拥有者参数的原因:

  1. 生命周期管理: 计时器的生命周期通常与拥有者对象相关联。当拥有者对象被销毁时,计时器也应该被销毁,以避免悬挂指针或未定义行为。指定拥有者对象允许引擎在拥有者对象销毁时自动取消相关的计时器。

  2. 作用域限定: 计时器的作用域通常限定在拥有者对象的上下文中。这意味着计时器的回调函数或方法可以访问拥有者对象的成员变量和方法。这对于在计时器回调中执行与拥有者对象相关的逻辑非常有用。

  3. 取消计时器: 拥有者参数使得取消计时器变得更容易。通过拥有者对象和计时器句柄,可以方便地取消计时器,防止它在不需要时继续执行。

示例代码:

FTimerHandle MyTimerHandle; 
// 在拥有者对象上设置计时器 
GetWorldTimerManager().SetTimer(MyTimerHandle, this, &AMyActor::MyFunction, 2.0f, false);

在这个例子中,this 作为拥有者参数,表示计时器被附属到当前的 AMyActor 对象上。这样,当 AMyActor 被销毁时,计时器也会被取消,确保不会在无效的对象上执行。

这篇关于说说关于UE中的定时器SetTimer的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/686441

相关文章

【Qt】定时器事件

定时器事件 在之前学习QTimer中实现了定时器的功能,而在QTimer背后是QTimerEvent定时器事件进行支撑的。在QObject中提供了一个timeEvent这个函数。 startTimer启动定时器killTimer关闭定时器 Qt 中在进⾏窗⼝程序的处理过程中,经常要周期性的执⾏某些操作,或者制作⼀些动画效果,使⽤定 时器就可以实现。所谓定时器就是在间隔⼀定时间后,去执⾏某⼀

独立按键单击检测(延时消抖+定时器扫描)

目录 独立按键简介 按键抖动 模块接线 延时消抖 Key.h Key.c 定时器扫描按键代码 Key.h Key.c main.c 思考  MultiButton按键驱动 独立按键简介 ​ 轻触按键相当于一种电子开关,按下时开关接通,松开时开关断开,实现原理是通过轻触按键内部的金属弹片受力弹动来实现接通与断开。  ​ 按键抖动 由于按键内部使用的是机

【JavaScript】在循环体中了解定时器工作机制

for (var i = 0; i < 5; i++) {setTimeout(function() {console.log(i);}, 1000);}console.log(i);   如果我们约定,用箭头表示其前后的两次输出之间有 1 秒的时间间隔,而逗号表示其前后的两次输出之间的时间间隔可以忽略,代码实际运行的结果该如何描述?会有下面两种答案: A. :5 -> 5 -> 5 ->

WebAPI (一)DOM树、DOM对象,操作元素样式(style className,classList)。表单元素属性。自定义属性。间歇函数定时器

文章目录 Web API基本认知一、 变量声明二、 DOM1. DOM 树2. DOM对象3. 获取DOM对象(1)、选择匹配的第一个元素(2)、选择匹配多个元素 三、 操作元素1. 操作元素内容2. 操作元素属性(1)、常用属性(href之类的)(2)、通过style属性操作CSS(3)、通过类名(className)操作CSS(4)、通过classList操作控制CSS(5)、操作表单

深入理解C语言中的POSIX定时器

引言 在Unix和类Unix系统中,定时器是一种常见的机制,用于在特定时间间隔后执行某些操作。POSIX定时器因其灵活性和功能丰富而被广泛采用。本文将深入探讨POSIX定时器的工作原理、内部机制、使用方法及其在实际开发中的应用。 POSIX定时器基础 POSIX定时器是一种高级定时器接口,它允许用户创建定时器并指定定时器到期时的动作。POSIX定时器支持以下特性: 信号通知:定时器到

Android AnalogClock TextClock DigitalClock Chronometer 时钟 定时器

AnalogClock 相关属性:  android:dial="@drawable/img1" //表盘android:hand_hour="@drawable/alert_dialog_icon" //时针android:hand_minute="@drawable/alert_dialog_icon" //分针 TextClock 相关属性: android:f

UE引擎工具链

当我们提到“引擎工具链的开发”时,通常指的是为游戏开发或其他类型的软件开发创建一系列工具和技术栈的过程。这包括但不限于游戏引擎本身(如Unity或Unreal Engine),以及围绕这些引擎构建的各种工具和服务,比如用于构建关卡编辑器、物理模拟工具、动画系统、脚本环境、调试工具、性能分析工具等等。 对于游戏引擎工具链的开发,开发者们通常需要掌握以下技能和知识: 1. **编程语言**:大多数

在UE的内容浏览器中添加自定义的Filter

目标需求 在UE的内容浏览器中,可以使用Filter来过滤资源: 目标需求是在这之中添加一个自定义的Filter。 其代码上是非常简单的,在本文末尾。 然而我觉得找到方法的过程也是挺有意思的,因此我也记录了下来。 探索过程 1. 在哪定义? 首先,我猜测Other Filters下的各个项目,也都是通过代码添加的。因此,我调了其中一项,比如Show Redirectors,然后对代码进

学习在UE中导入 Morph Targets 资源

前言 “Morph Targets” 指设定一个或多个目标,然后使顶点朝着目标变形。 我查到UE中有两种实现方式: 基于骨骼Mesh的。基于StaticMesh的。详见Static Mesh Morph Targets。此时变形将通过材质中的顶点偏移实现,而移动的数据将存在UV中,即有几个变形目标则多存几套UV。 本篇的实验是基于骨骼的。 目标是实验 Maya、Houdini、Blende