UE使用C++通过定时器启用和停用Tick

写在前面 

       PrimaryActorTick.bCanEverTick这个赋值为true也好,false也好,好像只能在构造函数里面起作用,应该就是当在构造函数里面执行

PrimaryActorTick.bCanEverTick = true;

之后,UE会在BeginPlay阶段自动执行

PrimaryActorTick.RegisterTickFunction(GetLevel());

就是自动注册了Tick方法。

        Tick注销的办法是

PrimaryActorTick.UnRegisterTickFunction();

        做了一段Actor自动上升的控制,通过计时器不断将Tick方法进行注册和注销,让Actor一会上升,一会儿停止。

启用和停用Tick的代码示例

.h文件代码:

#pragma once#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "DrawLine3D.generated.h"UCLASS()
class LEARNINGBP00_API ADrawLine3D : public AActor
{GENERATED_BODY()private:UStaticMesh* SM_Knot;UMaterial* matA;UStaticMeshComponent* StaticMeshA;public:	ADrawLine3D();protected:virtual void BeginPlay() override;public:virtual void Tick(float DeltaTime) override;FTimerHandle timeHandleA;FTimerHandle timeHandleB;//注册Tick的方法void RegisterTick();//注销Tick的方法void UnRegisterTick();
};

.cpp文件代码:

#include "DrawLine3D.h"ADrawLine3D::ADrawLine3D()
{SM_Knot = Cast<UStaticMesh>(StaticLoadObject(UStaticMesh::StaticClass(), NULL, TEXT("/Game/FBX/Knot")));matA = Cast<UMaterial>(StaticLoadObject(UMaterial::StaticClass(), NULL, TEXT("/Game/Material/MatA")));StaticMeshA = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("StaticMeshA"));StaticMeshA->SetStaticMesh(SM_Knot);StaticMeshA->SetMaterial(0, matA);PrimaryActorTick.bCanEverTick = true;//这个应该是只能在构造函数里面起作用。
}void ADrawLine3D::BeginPlay()
{Super::BeginPlay();//通过定时器设置每隔6秒注销TickGetWorldTimerManager().SetTimer(timeHandleA, this, &ADrawLine3D::UnRegisterTick, 6, true, 2);//通过定时器设置每隔6秒注册TickGetWorldTimerManager().SetTimer(timeHandleB, this, &ADrawLine3D::RegisterTick, 6, true, 5);
}void ADrawLine3D::Tick(float DeltaTime)
{Super::Tick(DeltaTime);//Actor以每秒10个单位的速度上升AddActorLocalOffset(FVector(0, 0, 10 * DeltaTime));
}void ADrawLine3D::RegisterTick() 
{PrimaryActorTick.RegisterTickFunction(GetLevel());GEngine->AddOnScreenDebugMessage(-256, 2, FColor::Blue, FString("RegisterTick"));
}void ADrawLine3D::UnRegisterTick() 
{PrimaryActorTick.UnRegisterTickFunction();GEngine->AddOnScreenDebugMessage(-111, 2, FColor::Red, FString("UnRegisterTick"));
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/181223.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JS splice的使用总结

JS splice的使用总结 JavaScript splice() 方法 JavaScript splice() 方法 直译&#xff1a;粘接 定义和用法&#xff1a; splice() 方法用于添加或删除数组中的元素。 这种方法会改变原始数组 参数 Values&#xff1a; 参数描述index必需。从何处添加/删除元素。该参数是开…

数据库的设计规范

文章目录 第一范式&#xff08;1NF&#xff09;&#xff1a;列不可再分 第二范式 &#xff08;2NF&#xff09;&#xff1a;所有非主键字段&#xff0c;都必须 完全依赖主键&#xff0c;不能部分依赖 第三范式&#xff08;3NF&#xff09;&#xff1a;所有非主键字段不能依赖于…

基于单片机红外测温(mlx90614)-原理图-PCB设计+源程序

一、系统方案 1、本设计采用52单片机作为主控器。 2、mlx90614采集温度&#xff0c;液晶显示温度值。 3、按键设置温度上下限。 4、实际测量温度小于下限或者大于上限&#xff0c;蜂鸣器报警&#xff0c;大于上限&#xff0c;风扇启动&#xff0c;低于下限&#xff0c;风扇停止…

选择更灵活的设计工具:SOLIDWORKS 软件网络版与单机版的比较

随着科技的飞速发展&#xff0c;工程设计领域对于高效、灵活的设计工具需求日益增加。SOLIDWORKS 作为一款广受欢迎的三维设计软件&#xff0c;提供了网络版和单机版两种选择。在本文中&#xff0c;我们将深入探讨这两个版本的区别&#xff0c;并为您详细介绍它们的价格差异。 …

【古月居《ros入门21讲》学习笔记】17_launch启动文件的使用方法

目录 说明&#xff1a; 1. launch文件作用 2. launch文件语法 根元素 参数设置 重映射、嵌套 3. 示例 创建功能包 1_simple.launch 编译 运行 2_turtlesim_parameter_config.launch 启动运行 启动运行显示说明 3_start_tf_demo_c.launch 启动运行 4_start_tf_d…

在右键菜单中添加自定义事件

一、覆盖默认右键菜单的方式 出于安全和用户体验的考虑&#xff0c;不允许直接修改或向默认的右键菜单&#xff08;浏览器的上下文菜单&#xff09;添加自定义项。因为允许网页脚本更改或扩展默认的上下文菜单可能会造成用户困惑&#xff0c;并有可能被恶意网站利用来进行钓鱼或…

嵌入式开发为什么需要输出调试信息?

嵌入式开发为什么需要输出调试信息&#xff1f; 因为输出调试信息是嵌入式开发中一项非常重要的实践&#xff0c;它有助于保证软件的可靠性、稳定性和性能&#xff0c;也是故障排查的关键工具之一。 嵌入式开发输出调试信息主要有以下作用&#xff1a; 1.错误排查与问题定位 输…

卓越进行时 | 西安交通大学校友莅临赛宁网安参观考察

近日&#xff0c;为了深入贯彻网络安全强国战略建设&#xff0c;积极发挥网络安全企业的先进作用&#xff0c;推动校企合作与协作共赢。西安交通大学领导携校友会来到赛宁网安网络安全卓越中心进行参观考察&#xff0c;为进一步的校企合作和产业孵化奠定基础。 活动期间&#…

docker安装Sentinel zipkin

文章目录 引言I Sentinel安装1.1 运行容器1.2 DOCKERFILE 参考1.3 pom 依赖1.4 .yml配置(整合springboot)II 资源保护2.1 Feign整合Sentinel2.2 CommonExceptionAdvice:限流异常处理类III zipkin引言 消息服务和请求第三方服务可不配置Sentinel。 I Sentinel安装 Sentinel …

list简单使用

目录 介绍 头文件 简单使用 Member functions Constructor operator ​编辑 Iterators Capacity empty size Element access: front/back Modifiers push_front pop_front push_back pop_back insert erase swap resize clear Operations remove uniq…

关于网站的favicon.ico图标的设置需要注意的几点

01-必须在网页的head标签中放上对icon图标的说明语句&#xff1a; 比如下面这样的语句&#xff1a; <link rel"shortcut icon" href"/favicon.ico">否则&#xff0c;浏览器虽然能读到图标&#xff0c;但是不会把图标显示在标签上。 02-为了和本地开…

从 0 搭建 Vite 3 + Vue 3 Js版 前端工程化项目

之前分享过一篇vue3+ts+vite构建工程化项目的文章,针对小的开发团队追求开发速度,不想使用ts想继续使用js,所以就记录一下从0搭建一个vite+vue3+js的前端项目,做记录分享。 技术栈 Vite 3 - 构建工具 Vue 3 Vue Router - 官方路由管理器 Pinia - Vue Store你也可以选择vue…

九、LuaTable(表)

文章目录 一、定义二、Table(表)的构造三、Table 操作&#xff08;一&#xff09;Table连接&#xff08;二&#xff09;插入和移除&#xff08;三&#xff09;Table 排序&#xff08;四&#xff09;Table 最大值 一、定义 table 是 Lua 的一种数据结构用来帮助我们创建不同的数…

基于SSM的教室信息管理系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于SSM的教室信息管理系统,java项目。 …

Unity中Shader的BRDF解析(三)

文章目录 前言一、BRDF中的镜面反射项二、分别解析每一个参数1、D、G函数&#xff1a;speclarTerm2、其他中间步骤3、光照颜色4、F函数&#xff08;菲涅尔函数&#xff09; &#xff1a;FresnelTermIBL在下篇文章中继续解析 三、最终代码.cginc文件:Shader文件&#xff1a; 前言…

贪心 376. 摆动序列

376. 摆动序列 题目&#xff1a; 连续数字&#xff08;前减后&#xff09;的差严格在正负之间交替&#xff0c;差值不能有0为摆动序列。 [1,7,4,9,2,5] 是一个摆动序列&#xff0c;因为差值 (6,-3,5,-7,3) 是正负交替出现的 给定一个整数序列&#xff0c;返回作为摆动序列…

Docker监控Weave Scope的安装和使用

1.本地安装Weave Scope 1&#xff09;创建文件夹。 mkdir /usr/local/bin/scope 2&#xff09;从本地上传文件。 rz scope.bin以资源形式已上传到文章开篇。 3&#xff09;修改scope.bin文件为可执行文件。 chmod 755 /usr/local/bin/scope/scope.bin 4&#xff09;执行sco…

AntDB数据库:从海量数据处理,到5G计费商用核心

AntDB数据库自2008年研发面世以来&#xff0c;首先被应用于运营商的核心系统&#xff0c;满足运营商海量数据处理的需求。随着数字科技的不断发展&#xff0c;AntDB也在不断地更新迭代&#xff0c;逐渐地为更多行业与客户提供更全面的服务。5G时代来临&#xff0c;AntDB抓住发展…

《微信小程序开发从入门到实战》学习三十六

4.2 云开发JSON数据库 4.2.6 云开发JSON数据库 在集合对象上调用add方法可以在集和中可以插入一条记录&#xff0c;代码如下&#xff1a; db.collection(testOne).add({ // 在JSON数据库的testOne集合中增加一个记录 data:{ name: "write paper" }, // 插入数据成功…

华住三季报:韧性增长超预期,夯实可持续发展底座

美股研究社获悉&#xff0c;2023年11月27日&#xff0c;华住集团2023年第三季度业绩发布会在线上举行。受华住三季度财报向好表现&#xff0c;多家证券公司给予买入评级。中信证券认为&#xff0c;本季度华住集团国内外RevPAR修复优于前期指引上限、净开店数优于预期。且华住集…