学习虚幻C++开发日志——定时器
官方文档:虚幻引擎中的Gameplay定时器 | 虚幻引擎 5.5 文档 | Epic Developer Community | Epic Developer Community
定时器
安排在经过一定延迟或一段时间结束后要执行的操作。例如,您可能希望玩家在获取某个能力提升道具后变得无懈可击,然后10秒钟后恢复可受伤害状态。又或者,您可能希望玩家在穿过一间充满毒气的房间时,每秒受到一次伤害。这些操作都可以使用定时器来实现。
注意:定时器消耗比较大,可用虚幻自带的GAS框架进行大消耗的更新等操作。
基础写法
先创建一个继承于Actor的类命名为TimerActor。
在头文件添加代码:
public://此函数具有重复调用作用void RepeatingFunction();protected://定义一个定时器FTimerHandle MyTimerHandle;//定时3秒int32 RepeatingCallsRemaining = 3;
在源文件添加代码:
void ATimerActor::BeginPlay()
{Super::BeginPlay();//拿到时间管理器FTimerManager& ThisTimerManager = GetWorldTimerManager();ThisTimerManager.SetTimer(MyTimerHandle, this, &ATimerActor::RepeatingFunction, 1.0f, true, 2.0f);
}void ATimerActor::RepeatingFunction()
{// 调用该函数达到足够次数后,清空定时器。if (--RepeatingCallsRemaining <= 0)//此写法为先减在判断{GetWorldTimerManager().ClearTimer(MyTimerHandle);//在输出日志去查看效果UE_LOG(LogTemp, Warning, TEXT("Timer End!"));}// 在此进行一些操作...
}
在Output Log中经过3秒显示自定义日志。

引擎源码片段:
SetTimer()

ClearTimer()

进阶写法
先创建一个继承于Actor的类命名为TimerActor。
在头文件添加代码:
public://渲染组件,将定时器显示在场景中class UTextRenderComponent* CountdownText;protected:void AdvanceTimer();void UpdataTimerDisplay();//此宏可将其在蓝图进行调用UFUNCTION(BlueprintNativeEvent)void CountdownHasFinshed();protected://可在编辑器进行修改UPROPERTY(EditAnywhere)int32 CountdownTime;FTimerHandle CountdownTimerHandle;
在基于此类创建的蓝图子类中:


在源文件添加代码:
//先添加头文件,以调用组件
#include"Components/TextRenderComponent.h"
先在默认构造函数中进行初始定义:
ALearnCountDownActor::ALearnCountDownActor()
{// Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it.PrimaryActorTick.bCanEverTick = false;CountdownText = CreateDefaultSubobject<UTextRenderComponent>(TEXT("CountdownNumber"));//可在蓝图组件处查看到名称CountdownText->SetHorizontalAlignment(EHTA_Center);//设置水平对齐CountdownText->SetWorldSize(150.0f);RootComponent = CountdownText;CountdownTime = 3;
}

void ALearnCountDownActor::UpdataTimerDisplay()
{CountdownText->SetText(FText::FromString(FString::FromInt(FMath::Max(CountdownTime,0))));//此处类型转换
}//_Implementation表明原生实现
void ALearnCountDownActor::CountdownHasFinshed_Implementation()
{//改为特殊读出CountdownText->SetText(FText::FromString(TEXT("Finsh!")));
}void ALearnCountDownActor::AdvanceTimer()
{--CountdownTime;//此处类似递归UpdataTimerDisplay();if (CountdownTime < 1){//倒数完成,停止运行定时器GetWorldTimerManager().ClearTimer(CountdownTimerHandle);CountdownHasFinshed();//出口}
}void ALearnCountDownActor::BeginPlay()
{Super::BeginPlay();//先更新UpdataTimerDisplay();GetWorldTimerManager().SetTimer(CountdownTimerHandle, this, &ALearnCountDownActor::AdvanceTimer, 1.0f, true);
}
思路: 先进行初始化,用FMath::Max取最大值返回数值从而更新,在AdvanceTimer函数中运用类似递归思想进行循环并结束,上述做法单独为一个函数,将其返回的参数在BeginPlay()中用GetWorldTimerManager().SetTimer进行处理。
相关文章:
学习虚幻C++开发日志——定时器
官方文档:虚幻引擎中的Gameplay定时器 | 虚幻引擎 5.5 文档 | Epic Developer Community | Epic Developer Community 定时器 安排在经过一定延迟或一段时间结束后要执行的操作。例如,您可能希望玩家在获取某个能力提升道具后变得无懈可击,…...
问政浔川(1)—— 有了浔川社团官方联合会和社团官方,那么浔川总社部是干什么的呢?
问政浔川(1)—— 有了浔川社团官方联合会和社团官方,那么浔川总社部是干什么的呢? 在浔川社团组织的复杂架构中,浔川社团官方联合会和社团官方已广为人知,但对于浔川总社部,很多人仍心存疑惑。这…...
区块链技术应用--电子签章(模块三)
区块链技术应用–电子签章(模块三) 背景描述 电子签章可实现与纸质文件盖章操作相似的可视效果,以保障数据来源的真实性、数据完整性以及签名人行为的不可否认性。 传统的电子签章系统是基于中心化的,也就是数据是集中存储在中心数据库中,这就导致传统电子签章使用记录…...
多面体定义+多面体是凸集+多面体的重要性质
文章目录 多面体定义多面体是凸集多面体重要性质1. 有界多面体(Convex Polytope)2. 无界多面体(Unbounded Polyhedron)3. 极点表示(顶点形式)与极点-极射线表示定理 在数学中, 多面体ÿ…...
为什么 Allow 配合 meta noindex 比使用Disallow好?
为什么 Allow 配合 meta noindex 1、Disallow 的问题 当你使用 Disallow: / 时: 爬虫根本不会访问你的页面 因此永远看不到你的 meta noindex 标签 如果有其他网站链接到你的页面,Google 可能还是会将其编入索引(因为它无法确认你是否真的…...
通讯学徒学习日记
本章内容为 长期更新模式,目前入职的第三天,学徒状态。 文章目录 前言开始接水晶头、接光纤水晶头接光纤 PON(GPON 、EPON)AON 和 PON 的详解AONPON 前言 编程虽然是爱好,但确实也想把这份爱好变成工作。但是对于目前刚…...
迪杰斯特拉算法
迪杰斯特拉算法 LeetCode 743. 网络延迟时间 https://blog.csdn.net/xiaoxi_hahaha/article/details/110257368 import sysdef dijkstra(graph, source):"""dijkstra算法:param graph: 邻接矩阵:param source: 出发点,源点:return:""&…...
IPsec传输模式与隧道模式的深度解析及应用实例
随着网络安全威胁的日益严峻,IPsec作为网络层安全协议,其传输模式与隧道模式的选择对确保通信安全至关重要。本文旨在深入探讨这两种模式的差异,并通过实际案例展示其应用。 一、传输模式和隧道模式的详细描述 传输模式: 应用场景…...
实现Vue3/Nuxt3 预览excel文件
安装必要的库 npm install xlsx 创建一个组件来处理文件上传和解析: 在src/components 目录下创建一个名为 ExcelPreview.vue 的文件 <template> <div> <input type"file" change"handleFileUpload" /> <table v-if"…...
【AI落地应用实战】HivisionIDPhotos AI证件照制作实践指南
最近在网上发现了一款轻量级的AI证件照制作的项目,名为HivisionIDPhotos。它利用AI模型实现对多种拍照场景的识别、抠图与证件照生成,支持轻量级抠图、多种标准证件照和排版照生成、纯离线或端云推理、美颜等功能。此外,项目还提供了Gradio D…...
php实现sl651水文规约解析
SL651-2014-《水文监测数据通信规约》 1、要素解析说明 39 23 00 00 03 45 0x39查标识符得知为:39H Z 瞬时河道水位、潮位,我们定义为水位 0x23 按照要素标识符的规定,高5bit,低3bit,00100 011 对应的转换为10进制为4与3,也就是水位数据占用4字节,小…...
【Linux】简易版shell
文章目录 shell的基本框架PrintCommandLineGetCommandLineParseCommandLineExecuteCommandInitEnvCheckAndExecBuildCommand代码总览运行效果总结 shell的基本框架 要写一个命令行我们首先要写出基本框架。 打印命令行获取用户输入的命令分析命令执行命令 基本框架的代码&am…...
宝塔Linux面板安装PHP扩展失败报wget: unable to resolve host address ‘download.bt.cn’
一、问题: 当使用宝塔面板安装PHP扩展失败出现如下错误时 Resolving download.bt.cn(download.bt.cn)...failed: Connection timed out. wget: unable toresolve host address download.bt.cn’ 二、解决: 第一步:如下命令执行拿到返回的I…...
问:Redis常见性能问题及解法?
Redis 作为一个高性能的键值存储系统,在实际应用中可能会遇到各种性能问题。本文将探讨 Redis 的常见性能问题,并提供相应的解决建议。主要针对五个关键问题进行讨论:Master 节点的持久化工作、Slave 节点的数据备份、主从复制的网络环境、主…...
Imperva 数据库与安全解决方案
Imperva是网络安全解决方案的专业提供商,能够在云端和本地对业务关键数据和应用程序提供保护。公司成立于 2002 年,拥有稳定的发展和成功历史并于 2014 年实现产值1.64亿美元,公司的3700多位客户及300个合作伙伴分布于全球各地的90多个国家。…...
【JavaScript】之文档对象模型(DOM)详解
JavaScript 的强大之处在于它能够与 HTML 和 CSS 交互,动态地修改网页内容和样式。而实现这一功能的核心就是 DOM(文档对象模型)。 一、什么是 DOM? DOM 是文档对象模型(Document Object Model)的缩写。它…...
速盾:cdn域名与ip区别
CDN(内容分发网络)是一种通过在全球多个服务器上缓存和分发静态资源的网络服务,可以提高网站的访问速度和性能。在使用CDN时,域名与IP地址是两个关键的概念。本文将介绍CDN域名与IP地址的区别和作用。 首先,CDN域名是…...
如何优雅的在页面上嵌入AI-Agent人工智能
前言 IDEA启动!大模型的title想必不用我多说了,多少公司想要搭上时代前言技术的快车,感受科技的魅力。现在大模型作为降本增效的强大工具,基本上公司大多人都想要部署开发一把,更多的想要利用到这些模型放到生产中来提…...
如何对LabVIEW软件进行性能评估?
对LabVIEW软件进行性能评估,可以从以下几个方面着手,通过定量与定性分析,全面了解软件在实际应用中的表现。这些评估方法适用于确保LabVIEW程序的运行效率、稳定性和可维护性。 一、响应时间和执行效率 时间戳测量:使用LabVIEW的时…...
动态规划 —— dp问题-按摩师
1. 按摩师 题目链接: 面试题 17.16. 按摩师 - 力扣(LeetCode)https://leetcode.cn/problems/the-masseuse-lcci/description/ 2. 算法原理 状态表示:以某一个位置为结尾或者以某一个位置为起点 dp[i]表示:选择到i位置…...
Z-Image-Turbo-rinaiqiao-huiyewunv开发者教程:gc.collect()+empty_cache显存防泄漏实践
Z-Image-Turbo-rinaiqiao-huiyewunv开发者教程:gc.collect()empty_cache显存防泄漏实践 1. 项目概述 Z-Image Turbo (辉夜大小姐-日奈娇)是基于Tongyi-MAI Z-Image底座模型开发的专属二次元人物绘图工具。该工具通过注入辉夜大小姐(日奈娇)微调safetensors权重&am…...
保姆级教程:在Ubuntu 20.04上搞定SigmaStar SSC336/SSC338/SSC30K的SDK编译环境(含bash切换和32位库安装)
SigmaStar SSC系列芯片开发环境搭建实战指南 从零开始配置Ubuntu 20.04编译环境 最近在接触SigmaStar SSC336/SSC338/SSC30K系列芯片开发时,发现官方文档对环境配置的描述较为简略,而实际搭建过程中会遇到各种"坑"。本文将结合实战经验&#x…...
Realistic Vision V5.1显存占用对比:启用offload前后VRAM峰值下降62%实测
Realistic Vision V5.1显存占用对比:启用offload前后VRAM峰值下降62%实测 1. 项目背景与技术特点 Realistic Vision V5.1是目前Stable Diffusion 1.5生态中最顶级的写实风格模型之一,能够生成媲美专业单反相机拍摄的人像作品。然而在实际使用中&#x…...
PyTorch Geometric安装避坑指南:从依赖冲突到版本匹配,手把手带你搞定PyG环境
PyTorch Geometric安装避坑指南:从依赖冲突到版本匹配 每次打开终端准备安装PyTorch Geometric(PyG)时,那种既期待又忐忑的心情,相信很多图神经网络(GNN)开发者都深有体会。明明按照官方文档一…...
Swin Transformer部署避坑指南:从环境搭建到性能翻倍的实战手册
Swin Transformer部署避坑指南:从环境搭建到性能翻倍的实战手册 【免费下载链接】Swin-Transformer This is an official implementation for "Swin Transformer: Hierarchical Vision Transformer using Shifted Windows". 项目地址: https://gitcode.…...
如何用Weylus将平板变身高性能绘图板:终极完整指南
如何用Weylus将平板变身高性能绘图板:终极完整指南 【免费下载链接】Weylus Use your tablet as graphic tablet/touch screen on your computer. 项目地址: https://gitcode.com/gh_mirrors/we/Weylus 想要将你的平板电脑变成专业的绘图板,却不想…...
[Android S] 深入解析statsd的log统计机制与实现
1. 认识Android系统中的statsd statsd是Android系统中一个非常重要的后台服务,它的主要职责是收集系统和应用的各类统计信息。你可能不知道,每次你在Android设备上执行操作时,statsd都在默默记录着各种数据。这些数据对于系统优化、性能分析和…...
cv_resnet101_face-detection_cvpr22papermogface 与数据库课程设计结合:构建人脸信息管理系统
cv_resnet101_face-detection_cvpr22papermogface 与数据库课程设计结合:构建人脸信息管理系统 1. 引言:从课堂理论到实战项目 如果你是一名计算机专业的学生,可能已经学过了数据库原理,也接触过一些人工智能的课程。但你是否想…...
Comsol瓦斯抽采:深入探索复杂的地下奥秘
comsol瓦斯抽采 该案例涉及不同抽采数学模型理论 不同渗透率模型、有效应力分布媒体变形情况、瓦斯抽采量瓦斯压力分布 涵盖不同地应力工况对比 有数个详细视频 视频涉及理论分析及推导、模型建立及案例操作过程在煤矿开采领域,瓦斯抽采是一项至关重要的技术&#x…...
OpenClaw备份与迁移:GLM-4.7-Flash项目完整转移指南
OpenClaw备份与迁移:GLM-4.7-Flash项目完整转移指南 1. 为什么需要完整的迁移方案 上周我的主力开发机突然硬盘故障,导致所有数据丢失。虽然OpenClaw本身是开源工具可以重装,但那些精心调试的配置文件、自定义技能和对接好的GLM-4.7-Flash模…...
