参考:

https://docs.unrealengine.com/zh-CN/Programming/Tutorials/VariablesTimersEvents/index.html

上面的代码,直接拷贝,还需要增加头文件才可以。拷贝一下可以编译通过的,记录一下。

// Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "Components/TextRenderComponent.h"
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "Countdown.generated.h"UCLASS()
class PLUGINS_ME_API ACountdown : public AActor
{GENERATED_BODY()public:    // Sets default values for this actor's propertiesACountdown();protected:// Called when the game starts or when spawnedvirtual void BeginPlay() override;public:   // Called every framevirtual void Tick(float DeltaTime) override;//倒数的运行时长(以秒计)UPROPERTY(EditAnywhere)int32 CountdownTime;UTextRenderComponent* CountdownText;void UpdateTimerDisplay();void AdvanceTimer();UFUNCTION(BlueprintNativeEvent)void CountdownHasFinished();virtual void CountdownHasFinished_Implementation();FTimerHandle CountdownTimerHandle;};
// Fill out your copyright notice in the Description page of Project Settings.#include "Countdown.h"// Sets default values
ACountdown::ACountdown()
{// Set this actor to call Tick() every frame.  You can turn this off to improve performance if you don't need it.PrimaryActorTick.bCanEverTick = true;CountdownText = CreateDefaultSubobject<UTextRenderComponent>(TEXT("CountdownNumber"));CountdownText->SetHorizontalAlignment(EHTA_Center);CountdownText->SetWorldSize(150.0f);RootComponent = CountdownText;CountdownTime = 3;
}// Called when the game starts or when spawned
void ACountdown::BeginPlay()
{Super::BeginPlay();UpdateTimerDisplay();GetWorldTimerManager().SetTimer(CountdownTimerHandle, this, &ACountdown::AdvanceTimer, 1.0f, true);
}// Called every frame
void ACountdown::Tick(float DeltaTime)
{Super::Tick(DeltaTime);}void ACountdown::UpdateTimerDisplay()
{CountdownText->SetText(FText::FromString(FString::FromInt(FMath::Max(CountdownTime, 0))));
}void ACountdown::AdvanceTimer()
{--CountdownTime;UpdateTimerDisplay();if (CountdownTime < 1){//倒数完成,停止运行定时器。GetWorldTimerManager().ClearTimer(CountdownTimerHandle);//定时器结束时,执行要执行的特殊操作。CountdownHasFinished();}
}void ACountdown::CountdownHasFinished_Implementation()
{//改为特殊读出CountdownText->SetText(FText::FromString("GO!"));
}

代码解读:

UTextRenderComponent* CountdownText;   文本渲染组件

这里应该是蓝图的事件通知

UFUNCTION(BlueprintNativeEvent)
        void CountdownHasFinished();

再看初始化的地方:

CountdownText = CreateDefaultSubobject<UTextRenderComponent>(TEXT("CountdownNumber"));  ---》创建渲染组件
    CountdownText->SetHorizontalAlignment(EHTA_Center);
    CountdownText->SetWorldSize(150.0f);    设置字体大小
    RootComponent = CountdownText;   好像每次都是赋值给根组件

CountdownTime = 3;

设置文本的值:

CountdownText->SetText(FText::FromString(FString::FromInt(FMath::Max(CountdownTime, 0))));

设置定时器

GetWorldTimerManager().SetTimer(CountdownTimerHandle, this, &ACountdown::AdvanceTimer, 1.0f, true);

记录一下定时器的操作:

具体代码如下:

步骤一:

FTimerHandle CountdownTimerHandle;

步骤二:

GetWorldTimerManager().SetTimer(CountdownTimerHandle, this, &ACountdown::AdvanceTimer, 1.0f, true);

步骤三:

GetWorldTimerManager().ClearTimer(CountdownTimerHandle);

步骤四:

CountdownHasFinished();

最后在蓝图调用如下图:记得选一下爆破的模式,不然没有效果

截个效果图纪念一下:

UE4之变量、定时器和事件相关推荐

  1. UE4鼠标滚轮轴缩放事件设置无效

    UE4鼠标滚轮轴缩放事件设置无效解决方案 事件图表: 设置完后发现滚轮依然无法缩放界面,则设置: 将[进行碰撞测试]勾选取消,编译运行后,鼠标滚轮可以缩放.

  2. vs2017开发ActiveX(主讲OCX)(十一)、类向导中MFC ActiveX添加方法、添加函数、添加变量、添加事件、添加属性、添加方法的区别

    本文我们就来说说类向导中MFC ActiveX添加方法.添加函数.添加变量.添加事件.添加属性.添加方法的区别.这个问题曾经困扰过我. 此处是向CCreateOcxDemoApp类中添加成员变量,及成 ...

  3. 【弄nèng - Activiti6】Activiti6入门篇(十五)—— 定时器中间事件

    文章目录 1. 定时器中间事件 1.1 简介 1.2 流程设计 1.3 测试类 1.4 运行 1.4.1 启动任务 源码地址 项目推荐 部分简介摘抄自官方文档 事例参考杨大仙的程序空间https:// ...

  4. UE4 开发之实现按钮事件响应

    本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 HelloWorld杰少 即可关注. 前言 电子游戏对大家来说应该是熟悉的不能再熟悉的东西了,现在游戏已经慢慢的成为了大家生活中不可或 ...

  5. DOM_06之定时器、事件、cookie

    1.定时器:①任务函数:函数结尾判断临界值:②启动定时器:a.周期性:timer=setInterval(任务函数,interval):b.一次性:timer=setTimeout(任务函数,wait ...

  6. [unreal4入门系列之十四] 在UE4中添加碰撞触发事件

    一.在HUD中显示消息 1) 在MyHUD.h中定义一个结构来表示我们的消息: #pragma once #include "GameFramework/HUD.h" #inclu ...

  7. 关闭 定时开启_【话说定时器系列】之四:STM32定时器更新事件及案例分享

    STM32定时器是 ST MCU 内部最基础且常用的外设,实际应用尤为普遍.去年,电堂推出了<STM32 TIMER基础及常规应用介绍>,为大家梳理了 STM32 TIMER 的庞大内容, ...

  8. qt-重写event(),事件过滤器,定时器,事件总结

    一.认识事件 1.事件(event) 是由系统或者 Qt 本身在不同的时刻发出的.当用户按下鼠标.敲下键盘,或者是窗口需要重新绘制的时候,都会发出一个相应的事件.一些事件在对用户操作做出响应时发出,如 ...

  9. ue4显示变量_UE4:快速入门蓝图(Blueprint)的方法之一

    UE4:快速入门蓝图(Blueprint)的方法之一 前言: 不久前因为工作的需要,学习了一下UE4的蓝图,发现并没有想象中的那么难以入门.今天把入门的方法和大家分享:D 适读人群: 1 有一定编程基 ...

最新文章

  1. Linux 系统上的库文件生成与使用
  2. 交换环境下的冗余及负载分担技术(STP Channel HSRP)
  3. elasticsearch 第五篇(文档操作接口)
  4. 一周安全事件点评:***黑手正伸向商业数据
  5. Git Flow工作流图
  6. 换了一个皮肤,心情也好多了
  7. 华为Y9s海外官网上架:升降式全面屏+侧面指纹识别
  8. 澎思科技获IDG资本数千万元Pre-A轮融资,推出AI安防全场景软硬件解决方案
  9. print (re.findall((?:abc)+,abcabcabc))
  10. matlab cftool 最小二乘,【转】最小二乘法与matlab拟合工具箱cftool
  11. 计算机恢复出场设置,小白教你电脑恢复出厂设置
  12. Adaptive AUTOSAR Diagnostic Manager模块介绍(一)
  13. 我是怎么画架构图的?
  14. 生日那天,我失恋了!!
  15. Excel:妙用自定义函数让班级名称自动化(转)
  16. 太极自定义diy名片模板_没有合适的手帐本?拿走这些电子模板,自制属于自己的手帐本...
  17. 正态分布在数据分析中的应用
  18. oracle9i rac for aix,oracle 11gR2 rac for aix 第二个节点运行root.sh不成功问题处理
  19. C#中跳过循环continue与break
  20. 虚拟实验工场计算机科学导论论文,计算机科学导论论文

热门文章

  1. WORD的POI处理与原理
  2. java 如何处理正则
  3. mysql 怎么改属性_mysql怎么修改字段的属性
  4. SVM多分类问题 :matlab中的应用
  5. pandas数据处理实践五(透视表pivot_table、分组和透视表实战Grouper和pivot_table)
  6. 微信大改版,更新前必看的4个东西
  7. 最具发展前景的8大行业,IT行业排第一!
  8. mysql group by cube_group by、grouping sets、with rollup、with cube方法
  9. pytorch 画loss曲线_Pytorch练习amp;#8211;绘制Loss曲线 - 易采站长站
  10. Python使用property函数和使用@property装饰器定义属性访问方法的异同点分析