当前位置: 首页 > news >正文

学习虚幻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++开发日志——定时器

官方文档&#xff1a;虚幻引擎中的Gameplay定时器 | 虚幻引擎 5.5 文档 | Epic Developer Community | Epic Developer Community 定时器 安排在经过一定延迟或一段时间结束后要执行的操作。例如&#xff0c;您可能希望玩家在获取某个能力提升道具后变得无懈可击&#xff0c;…...

问政浔川(1)—— 有了浔川社团官方联合会和社团官方,那么浔川总社部是干什么的呢?

问政浔川&#xff08;1&#xff09;—— 有了浔川社团官方联合会和社团官方&#xff0c;那么浔川总社部是干什么的呢&#xff1f; 在浔川社团组织的复杂架构中&#xff0c;浔川社团官方联合会和社团官方已广为人知&#xff0c;但对于浔川总社部&#xff0c;很多人仍心存疑惑。这…...

区块链技术应用--电子签章(模块三)

区块链技术应用–电子签章(模块三) 背景描述 电子签章可实现与纸质文件盖章操作相似的可视效果,以保障数据来源的真实性、数据完整性以及签名人行为的不可否认性。 传统的电子签章系统是基于中心化的,也就是数据是集中存储在中心数据库中,这就导致传统电子签章使用记录…...

多面体定义+多面体是凸集+多面体的重要性质

文章目录 多面体定义多面体是凸集多面体重要性质1. 有界多面体&#xff08;Convex Polytope&#xff09;2. 无界多面体&#xff08;Unbounded Polyhedron&#xff09;3. 极点表示&#xff08;顶点形式&#xff09;与极点-极射线表示定理 在数学中&#xff0c; 多面体&#xff…...

为什么 Allow 配合 meta noindex 比使用Disallow好?

为什么 Allow 配合 meta noindex 1、Disallow 的问题 当你使用 Disallow: / 时&#xff1a; 爬虫根本不会访问你的页面 因此永远看不到你的 meta noindex 标签 如果有其他网站链接到你的页面&#xff0c;Google 可能还是会将其编入索引&#xff08;因为它无法确认你是否真的…...

通讯学徒学习日记

本章内容为 长期更新模式&#xff0c;目前入职的第三天&#xff0c;学徒状态。 文章目录 前言开始接水晶头、接光纤水晶头接光纤 PON&#xff08;GPON 、EPON&#xff09;AON 和 PON 的详解AONPON 前言 编程虽然是爱好&#xff0c;但确实也想把这份爱好变成工作。但是对于目前刚…...

迪杰斯特拉算法

迪杰斯特拉算法 LeetCode 743. 网络延迟时间 https://blog.csdn.net/xiaoxi_hahaha/article/details/110257368 import sysdef dijkstra(graph, source):"""dijkstra算法:param graph: 邻接矩阵:param source: 出发点&#xff0c;源点:return:""&…...

IPsec传输模式与隧道模式的深度解析及应用实例

随着网络安全威胁的日益严峻&#xff0c;IPsec作为网络层安全协议&#xff0c;其传输模式与隧道模式的选择对确保通信安全至关重要。本文旨在深入探讨这两种模式的差异&#xff0c;并通过实际案例展示其应用。 一、传输模式和隧道模式的详细描述 传输模式&#xff1a; 应用场景…...

实现Vue3/Nuxt3 预览excel文件

安装必要的库 npm install xlsx 创建一个组件来处理文件上传和解析&#xff1a; 在src/components 目录下创建一个名为 ExcelPreview.vue 的文件 <template> <div> <input type"file" change"handleFileUpload" /> <table v-if"…...

【AI落地应用实战】HivisionIDPhotos AI证件照制作实践指南

最近在网上发现了一款轻量级的AI证件照制作的项目&#xff0c;名为HivisionIDPhotos。它利用AI模型实现对多种拍照场景的识别、抠图与证件照生成&#xff0c;支持轻量级抠图、多种标准证件照和排版照生成、纯离线或端云推理、美颜等功能。此外&#xff0c;项目还提供了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’

一、问题&#xff1a; 当使用宝塔面板安装PHP扩展失败出现如下错误时 Resolving download.bt.cn(download.bt.cn)...failed: Connection timed out. wget: unable toresolve host address download.bt.cn’ 二、解决&#xff1a; 第一步&#xff1a;如下命令执行拿到返回的I…...

问:Redis常见性能问题及解法?

Redis 作为一个高性能的键值存储系统&#xff0c;在实际应用中可能会遇到各种性能问题。本文将探讨 Redis 的常见性能问题&#xff0c;并提供相应的解决建议。主要针对五个关键问题进行讨论&#xff1a;Master 节点的持久化工作、Slave 节点的数据备份、主从复制的网络环境、主…...

Imperva 数据库与安全解决方案

Imperva是网络安全解决方案的专业提供商&#xff0c;能够在云端和本地对业务关键数据和应用程序提供保护。公司成立于 2002 年&#xff0c;拥有稳定的发展和成功历史并于 2014 年实现产值1.64亿美元&#xff0c;公司的3700多位客户及300个合作伙伴分布于全球各地的90多个国家。…...

【JavaScript】之文档对象模型(DOM)详解

JavaScript 的强大之处在于它能够与 HTML 和 CSS 交互&#xff0c;动态地修改网页内容和样式。而实现这一功能的核心就是 DOM&#xff08;文档对象模型&#xff09;。 一、什么是 DOM&#xff1f; DOM 是文档对象模型&#xff08;Document Object Model&#xff09;的缩写。它…...

速盾:cdn域名与ip区别

CDN&#xff08;内容分发网络&#xff09;是一种通过在全球多个服务器上缓存和分发静态资源的网络服务&#xff0c;可以提高网站的访问速度和性能。在使用CDN时&#xff0c;域名与IP地址是两个关键的概念。本文将介绍CDN域名与IP地址的区别和作用。 首先&#xff0c;CDN域名是…...

如何优雅的在页面上嵌入AI-Agent人工智能

前言 IDEA启动&#xff01;大模型的title想必不用我多说了&#xff0c;多少公司想要搭上时代前言技术的快车&#xff0c;感受科技的魅力。现在大模型作为降本增效的强大工具&#xff0c;基本上公司大多人都想要部署开发一把&#xff0c;更多的想要利用到这些模型放到生产中来提…...

如何对LabVIEW软件进行性能评估?

对LabVIEW软件进行性能评估&#xff0c;可以从以下几个方面着手&#xff0c;通过定量与定性分析&#xff0c;全面了解软件在实际应用中的表现。这些评估方法适用于确保LabVIEW程序的运行效率、稳定性和可维护性。 一、响应时间和执行效率 时间戳测量&#xff1a;使用LabVIEW的时…...

动态规划 —— dp问题-按摩师

1. 按摩师 题目链接&#xff1a; 面试题 17.16. 按摩师 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/the-masseuse-lcci/description/ 2. 算法原理 状态表示&#xff1a;以某一个位置为结尾或者以某一个位置为起点 dp[i]表示&#xff1a;选择到i位置…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作&#xff0c;无需更改相机配置。但是&#xff0c;一…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时&#xff0c;与数据库的交互无疑是核心环节。虽然传统的数据库操作方式&#xff08;如直接编写SQL语句与psycopg2交互&#xff09;赋予了我们精细的控制权&#xff0c;但在面对日益复杂的业务逻辑和快速迭代的需求时&#xff0c;这种方式的开发效率和可…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容&#xff08;一&#xff09;CDN 基础概念1. 定义2. 组成部分 &#xff08;二&#xff09;CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 &#xff08;三&#xff09;CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...

laravel8+vue3.0+element-plus搭建方法

创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

算术操作符与类型转换:从基础到精通

目录 前言&#xff1a;从基础到实践——探索运算符与类型转换的奥秘 算术操作符超级详解 算术操作符&#xff1a;、-、*、/、% 赋值操作符&#xff1a;和复合赋值 单⽬操作符&#xff1a;、--、、- 前言&#xff1a;从基础到实践——探索运算符与类型转换的奥秘 在先前的文…...