首页 > 编程语言 >UE5 C++ 定时器使用

UE5 C++ 定时器使用

时间:2023-06-19 16:11:15浏览次数:54  
标签:定时器 管理器 函数 句柄 C++ SetTimer UE5 FTimerManager

概念

  • 定时器在全局定时器管理器(FTimerManager类型)中管理。
  • 全局定时器管理器存在于 游戏实例 对象上以及每个场景中。
  • 有两个函数可以使用定时器管理器来设置定时器:SetTimerSetTimerForNextTick,它们各自都有一些重载,每个函数都可以连接到任意类型的对象或函数委托

使用

  • 访问定时管理器

    • Actor及其派生类中使用 GetWorldTimeManager函数
  • 访问全局定时器管理器

    • UGameInstance::GetTimerManager();
    • 全局管理器可以用于与任何特定场景的存在没有相关性或依赖性的函数调用
  • 定时器
    1.设置

    template<class UserClass>
    void SetTimer
    (
        FTimerHandle & InOutHandle,
        UserClass * InObj,
        typename FTimerDelegate::TUObjectMethodDelegate< UserClass >::FMethodPtr InTimerMethod,
        float InRate,
        bool InbLoop,
        float InFirstDelay
    )
    

    2.清空:

    • 将 SetTimer 期间填充的 FTimerHandle 传递到 FTimerManager 函数 ClearTimer
      GetWorldTimerManager().ClearTimer(YourTimerHnadleInstance);
    • 使用现有定时器句柄调用 SetTimer 将清空该定时器句柄引用的定时器,并将它换成新定时器
    • 与特定对象关联的所有定时器都可以通过调用 GetWorldTimerManager().ClearAllTimersForObject(objectInstance);来清空

    3.暂停与恢复

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

    4.定时器信息

    • FTimerManager::IsTimerActive()函数用于确定指定定时器当前是否活跃且未暂停。
    • FTimerManager::GetTimerRate()用于从定时器句柄获取定时器的当前速率(两次激活之间的时间)
    • FTimermanager::GetTimerElapsed()&GetTimerRemaining(),针对与所提供的定时器句柄关联的定时器,提供了返回经过时间和剩余时间的功能

标签:定时器,管理器,函数,句柄,C++,SetTimer,UE5,FTimerManager
From: https://www.cnblogs.com/scyrc/p/17491209.html

相关文章

  • STM32:rtthread_"rt_timer"定时器
    1定时器  轮询系统和前后台系统中的延时为直接阻塞延时,让函数一直等着直到延时够了再继续执行;  大概rtthread觉得直接阻塞延时效率不够高,逻辑不够优美;所以它给每个thread都配置了一个rt_timer类型的thread_timer定时器;  所有定时器由定时器链表统一管理,通过对thread_ti......
  • C++ 重载运算符
    为了叙述的方便,以下内容以赋值运算符为例赋值运算符本质是一个名为operator=的函数,某些运算符必须定义为成员函数赋值运算符定义示例代码classFoo{public:Foo&operator=(constFoo&);};......
  • C++多态的原理(虚函数指针和虚函数表) --imxiangzi 好好看
     C++多态的原理(虚函数指针和虚函数表)1.虚函数指针和虚函数表2.继承中的虚函数表2.1单继承中的虚函数表2.2多继承中的虚函数表3.多态的原理4.总结1.虚函数指针和虚函数表以下代码:问类实例化出的对象占几个字节?#include<iostream>usingnamespacestd;classA{ intm_a;publi......
  • c++11新特性之线程相关所有知识点
    c++11关于并发引入了好多好东西,这里按照如下顺序介绍:std::thread相关std::mutex相关std::lock相关std::atomic相关std::call_once相关volatile相关std::condition_variable相关std::future相关async相关std::thread相关c++11之前你可能使用pthread......
  • C++ 高级开发者需要掌握的10个特性
    C++正在快速向前发展,所以想要紧跟其脚步并不是一件容易的事。我们在之前的文章中讨论过这个问题,讨论了C++的演变以及如何实现遗留C++代码现代化。在这篇文章中,我们将重点介绍经验丰富的C++开发人员可以跟上的高级主题列表。我们将尝试涵盖我们认为相关的内容,而不限于特定......
  • 介绍一个C++奇巧淫技
    你能实现这样一个函数吗:MyTypetype;HisTypehtype;serialize_3(11,type,htype);serialize_4(type,htype,type,htype);serialize_4(11,type,htype,htype);参数类型自由,个数自由,怎么做呢?往下看:[xiaochu.yh@OBmacro]$catauto_type.cpp/**(C)1999-2013......
  • 《C++》多态
    多态多态分为两种:静态多态:函数重载和运算符重载属于静态多态,复用函数名动态多态:派生类和虚函数实现运行时多态静态多态函数地址早绑定--编译阶段确定函数地址动态多态函数地址晚绑定--运行阶段确定函数地址virtual  //修饰虚函数,使之变为动态多态特点代码结构清晰可读性强......
  • C++常用数据结构
    数据结构1.线性表由n个具有相同性质的数据元素1.1顺序表(数组)定义:用一组地址连续的存储单元依次存储线性表中每个数据元素特点:逻辑关系相邻的两个元素在物理位置上也相邻#c++实现template<typenameT>classsqlist{public:sqlist(intmaxsize=10):Maxsize(......
  • 现代C++学习指南-类型系统
    在前一篇,我们提供了一个方向性的指南,但是学什么,怎么学却没有详细展开。本篇将在前文的基础上,着重介绍下怎样学习C++的类型系统。写在前面在进入类型系统之前,我们应该先达成一项共识——尽可能使用C++的现代语法。众所周知,出于兼容性的考虑,C++中很多语法都是合法的。但是随着新......
  • #yyds干货盘点#C++命名空间
    命名空间命名空间是C++语言的新特性,它能够解决命名冲突问题。例如,小明定义了一个函数swap(),C++标准程序库中也存在一个swap()函数。此时,为了区分调用的是哪个swap()函数,可以通过命名空间进行标识。C++中的命名空间包括两种,具体介绍如下。usingnamespacestd;1.标准命名空间std是C+......