UE学习记录09----C++实现Actor 单击/双击事件

思路:重载Actor的单击事件,通过计时器判断时间段内鼠标惦记的次数

// Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "TestActor.generated.h"DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FPlottingOnClicked, AActor*, TouchedActor);/*** 标绘对象基类*/
UCLASS(BlueprintType, Blueprintable)
class TEST_API TestActor: public AActor
{GENERATED_BODY()public:	// Sets default values for this actor's propertiesTestActor();protected:// Called when the game starts or when spawnedvirtual void BeginPlay() override;public:	// Called every framevirtual void Tick(float DeltaTime) override;public://鼠标点击次数,判断单击双击事件int clickedNum = 0;// 事件//单击事件UPROPERTY(BlueprintAssignable, BlueprintCallable)FPlottingOnClicked EventDispatcher_PlottingOnClicked;//双击事件UPROPERTY(BlueprintAssignable, BlueprintCallable)FPlottingOnClicked EventDispatcher_PlottingOnDoubleClicked;//重写Actor的点击事件virtual void NotifyActorOnClicked(FKey ButtonPressed = EKeys::LeftMouseButton) override;};
// Fill out your copyright notice in the Description page of Project Settings.#include "TestActor.h"// Sets default values
TestActor::TestActor()
{// 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;}// Called when the game starts or when spawned
void TestActor::BeginPlay()
{Super::BeginPlay();}// Called every frame
void TestActor::Tick(float DeltaTime)
{Super::Tick(DeltaTime);}//单击、双击事件
void TestActor::NotifyActorOnClicked(FKey ButtonPressed)
{Super::NotifyActorOnClicked(ButtonPressed);if (ButtonPressed == EKeys::LeftMouseButton){clickedNum++;// 设置计时器来判断单击或双击  FTimerHandle timerHandle;GetWorldTimerManager().SetTimer(timerHandle, [this](void){if (clickedNum == 1){UE_LOG(LogTemp, Log, TEXT("single"));EventDispatcher_PlottingOnClicked.Broadcast(this);}else if (clickedNum == 2){UE_LOG(LogTemp, Log, TEXT("double"));EventDispatcher_PlottingOnDoubleClicked.Broadcast(this);}else{UE_LOG(LogTemp, Error, TEXT("invalid clickedNumber"));}clickedNum = 0; // 重置点击计数器  }, 0.25f, false); // 设置计时器的时间间隔为0.25秒,并且只触发一次  }
}

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

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

相关文章

回归预测 | MATLAB实现GA-LSSVM基于遗传算法优化最小二乘向量机的多输入单输出数据回归预测模型 (多指标,多图)

回归预测 | MATLAB实现GA-LSSVM基于遗传算法优化最小二乘向量机的多输入单输出数据回归预测模型 (多指标,多图) 目录 回归预测 | MATLAB实现GA-LSSVM基于遗传算法优化最小二乘向量机的多输入单输出数据回归预测模型 (多指标&#…

doNet Core中解压zip

doNet Core4.0解压zip文件 1、ZipInputStream.cs public class ZipHelper { /// /// 解压缩一个 zip 文件。 /// /// The ziped file. /// The STR directory. /// 是否覆盖已存在的文件。 public static void UnZip(string zipedFile, string strDirectory, bool overWrit…

ISCTF(b)

test_nc nc_shell ls cat flag 这两道题比较像 你说爱我?尊嘟假嘟 打开后重复出现 “ 你说爱我 ” “ 尊嘟 ” “ 假嘟 ” 。判断为 Ook 加密 , 将 “ 你说爱我 ” 替换为 “Ook.” ; “ 尊嘟 ” 替换为: “Ook!” ; “ 假嘟…

mysql函数(二)之常见字符串函数

MySQL中常见的字符串函数有以下几种: CONCAT():将两个或多个字符串连接在一起。 用法:CONCAT(string1, string2, ...) 效果图: LENGTH():返回字符串的长度。 用法:LENGTH(string) 效果图: U…

教你如何使用天眼销查企业客户

天眼销是一款能够帮助客户获取最新的企业联系方式、工商信息等关键数据的平台。 平台基于先进的技术和大数据解决方案,深入挖掘和分析企业信息,能够高效地收集、整理和存储各类企业数据,为用户提供360度视角和洞察;提供全面、准确…

【算法与数据结构】LeetCode55、45、跳跃游戏 I 、II

文章目录 一、跳跃游戏I二、跳跃游戏II三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、跳跃游戏I 思路分析:本题目标是根据跳跃数组的元素,判断最终能够到达数组末端。我们引入了一个跳跃范围…

跨境电商的未来工作方式:远程团队与全球协作

随着数字化时代的来临,跨境电商行业在不断演变,其未来工作方式也呈现出新的趋势。本文将探讨跨境电商未来的工作方式,聚焦于远程团队与全球协作的发展,以揭示这一变革如何重新定义企业的组织结构和工作模式。 远程团队的崛起 近年…

【重点!】【二分查找】33.搜索旋转排序数组

题目 法1:二分查找 根据mid来分段,此思路需要牢记!!! class Solution {public int search(int[] nums, int target) {if (nums.length 0) {return -1;}int left 0, right nums.length - 1, mid 0;while (left &…

Leetcode—859.亲密字符串【简单】

2023每日刷题(六十三) Leetcode—859.亲密字符串 💩山实现代码 class Solution { public:bool buddyStrings(string s, string goal) {int len1 s.size(), len2 goal.size();int cnt 0;int flag 0;int flag2 0;int odd -1;int a[26] …

双指针——找到字符串中的所有字母异位词

https://leetcode.cn/problems/find-all-anagrams-in-a-string/description/?envTypestudy-plan-v2&envIdtop-100-liked 双指针,每次都统计出来p长度的滑动窗口里的数字,拿Arrays.equals进行对比,然后滑动一小格,减1加1继续比对即可。 class Solut…

VS2019, mfc,c++和halcon 2022调试的时候,查询halcon变量的值, 一直提示未为 halconcpp.dll 加载任何符号

在调试看值的过程中,发现这里看不到变量的值。 可以使用halcon变量检查工具查看。

Leetcode—96.不同的二叉搜索树【中等】

2023每日刷题&#xff08;六十四&#xff09; Leetcode—96.不同的二叉搜索树 算法思想 实现代码 class Solution { public:int numTrees(int n) {vector<int> G(n 1, 0);G[0] 1;G[1] 1;for(int i 2; i < n; i) {for(int j 1; j < i; j) {G[i] G[j - 1] * …

多目标跟踪学习

本文来源&#xff1a; 目标跟踪那些事儿-技术和课程介绍_哔哩哔哩_bilibili 为该视频的学习笔记 目的&#xff1a;我的学习目的主要是了解现有的跟踪算法&#xff0c;并着重了解卡尔曼滤波算法&#xff0c;利用卡尔曼滤波算法进行多目标跟踪等后续一系列估计算法。老师视频中提…

harmonyOS 自定义组件基础演示讲解

上文 HarmonyOS组件属性控制 链式编程格式推荐我们讲了一些系统组件 可以传入一些事件和参数 来达到一些不同的效果 其实 我们还可以用自己写的组件 那么 组件这么写&#xff1f; 其实 我们的 page 内部结果 就是一个组件 harmonyOS的概念 万物皆组件 那么 我们就可以在他下面…

C/C++ fmt 格式化字符串实现(轻量)

实现的目的&#xff1b;提高 C/C 编译速度&#xff0c;fmt 库模板嵌套过多编译速度非常慢&#xff0c;且编译后程序体积也过大&#xff0c;函数步入的栈帧过多&#xff01; 只支持格式&#xff1b;{} 不支持格式&#xff1b;{:02x} class fmt { public:template <typenam…

产品入门第六讲:Axure中继器

&#x1f4da;&#x1f4da; &#x1f3c5;我是默&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; ​​​​​​ &#x1f31f;在这里&#xff0c;我要推荐给大家我的专栏《Axure》。&#x1f3af;&#x1f3af; &#x1f680;无论你是编程小白&#xff0c…

Spring Boot Testing中文文档

本文为官方文档直译版本。原文链接 Spring Boot Testing中文文档 引言测试范围依赖测试 Spring 应用程序测试 Spring Boot 应用程序检测 Web 应用程序类型检测测试配置使用测试配置主方法排除测试配置使用应用程序参数使用模拟环境进行测试通过运行中的服务器进行测试自定义 We…

ChatGPT引领AI时代:程序员、项目经理、产品经理、架构师、Python量化交易师的翅膀

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 在当今AI时代&#xff0c;ChatGPT作为一项卓越…

信号驱动IO(新)

信号驱动IO是与内核建立SIGIO的信号处理函数并设置回调&#xff0c;当内核有FD就绪时&#xff0c;内核会发出SIGIO信号通知用户进程&#xff0c;在这期间用户应用进程可以执行其他业务&#xff0c;无需阻塞等待。 这个信号驱动IO多好啊&#xff0c;直接替代IO多路复用不好吗&am…

数字化医疗新篇章:构建智能医保支付购药系统

在迎接数字化医疗时代的挑战和机遇中&#xff0c;智能医保支付购药系统的建设显得尤为重要。本文将深入介绍如何通过先进的技术实现&#xff0c;构建一套智能、高效的医保支付购药系统&#xff0c;为全面建设健康中国贡献力量。 1. 引言 随着医疗科技的飞速发展&#xff0c;…