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

UE5自定义蓝图节点(二)

继承于UBlueprintAsyncActionBase的类,异步输出节点的实现方法,代码测试正常

.h

// Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h"
#include "Kismet/BlueprintAsyncActionBase.h"
#include "MyClassAsyncActionBase.generated.h"/*** */DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FResponsDeleget,int32,ID,FString,Data);UCLASS()
class NEWCOUSTNODE_API UMyClassAsyncActionBase : public UBlueprintAsyncActionBase
{GENERATED_BODY()public:UPROPERTY(BlueprintAssignable)FResponsDeleget Onsuccess;UPROPERTY(BlueprintAssignable)FResponsDeleget OnFail;UPROPERTY()int temp = 0;void isEqual();UFUNCTION(BlueprintCallable, meta = (BlueprintInternalUseOnly = "true"))static UMyClassAsyncActionBase* MyClassAsyncActionBase(const int ID);virtual void Activate() override;
};
/*
这是一个 Unreal Engine 项目的头文件(.h 文件),其中包含了一个自定义的蓝图异步操作基类 `UMyClassAsyncActionBase`。1. `#pragma once`: 这是预处理指令,确保该头文件只会被编译一次,以防止重复包含。2. `#include "CoreMinimal.h"`: 这是 Unreal Engine 的核心头文件,它包含了一些常用的基本功能和宏定义。3. `#include "Kismet/BlueprintAsyncActionBase.h"`: 这是 Unreal Engine 提供的蓝图异步操作基类的头文件,`UMyClassAsyncActionBase` 将继承自它,以便在蓝图中实现异步功能。4. `#include "MyClassAsyncActionBase.generated.h"`: 这是一个自动生成的文件,其中包含了 `UMyClassAsyncActionBase` 类的声明,它由 Unreal Engine 的蓝图系统根据以下内容生成。5. `DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FResponsDeleget,int32,ID,FString,Data);`: 这是一个声明了两个参数的动态多播代理(Delegate),称为 `FResponsDeleget`。它有两个参数:一个整数类型的 `ID` 和一个字符串类型的 `Data`。这个代理用于在异步操作完成时触发并传递结果。6. `UCLASS()`: 这是一个宏,用于标记 `UMyClassAsyncActionBase` 类为 Unreal Engine 的蓝图类。通过使用这个宏,我们可以在蓝图中继承这个类,并在蓝图中实现自定义的异步逻辑。7. `GENERATED_BODY()`: 这是一个宏,用于告诉 Unreal Engine 在这个类中生成相关的代码。这包括成员变量、函数等的实现。8. `UPROPERTY(BlueprintAssignable)`: 这是一个 Unreal Engine 的宏,用于声明一个属性,使其在蓝图中可见并允许绑定事件。9. `FResponsDeleget Onsuccess;`: 这是一个声明了代理 `FResponsDeleget` 的成员变量 `Onsuccess`,用于在异步操作成功时触发事件。10. `FResponsDeleget OnFail;`: 这是一个声明了代理 `FResponsDeleget` 的成员变量 `OnFail`,用于在异步操作失败时触发事件。11. `UPROPERTY()`: 这是 Unreal Engine 的宏,用于声明一个属性(成员变量)。12. `int temp = 0;`: 这是一个整型成员变量 `temp` 的初始化,初始值为 0。13. `void isEqual();`: 这是一个未实现的函数声明,可能是作者计划在后续实现类中的功能。14. `UFUNCTION(BlueprintCallable, meta = (BlueprintInternalUseOnly = "true"))`: 这是一个宏,用于声明一个蓝图可调用的函数,它标记了函数 `MyClassAsyncActionBase` 为蓝图中的可用函数。15. `static UMyClassAsyncActionBase* MyClassAsyncActionBase(const int ID);`: 这是一个静态函数声明,用于创建并返回 `UMyClassAsyncActionBase` 类的实例。函数参数为整数类型的 `ID`。16. `virtual void Activate() override;`: 这是 Unreal Engine 的蓝图异步操作基类中的虚函数,将在子类中被实现,用于启动异步操作。
*/

.cpp

// Fill out your copyright notice in the Description page of Project Settings.#include "MyClassAsyncActionBase.h"UMyClassAsyncActionBase* UMyClassAsyncActionBase::MyClassAsyncActionBase(const int ID)
{UMyClassAsyncActionBase* NewFeroxNod = NewObject<UMyClassAsyncActionBase>();NewFeroxNod->temp = ID;return NewFeroxNod;}void UMyClassAsyncActionBase::Activate()
{isEqual();}
void UMyClassAsyncActionBase::isEqual()
{if (temp>0){Onsuccess.Broadcast(temp,"success! from c++");}else{OnFail.Broadcast(-228,"Fail");}RemoveFromRoot();
}/*
这是 Unreal Engine 项目中 `MyClassAsyncActionBase.cpp` 文件的内容,它实现了之前在头文件中声明的 `UMyClassAsyncActionBase` 类的成员函数。1. `#include "MyClassAsyncActionBase.h"`: 这是包含了头文件 `MyClassAsyncActionBase.h`,以便在这个源文件中使用 `UMyClassAsyncActionBase` 类的定义和成员函数。2. `UMyClassAsyncActionBase* UMyClassAsyncActionBase::MyClassAsyncActionBase(const int ID)`: 这是静态函数 `MyClassAsyncActionBase` 的实现。它创建并返回 `UMyClassAsyncActionBase` 类的实例。函数参数 `ID` 是一个整数,用于初始化实例的 `temp` 成员变量。3. `UMyClassAsyncActionBase* NewFeroxNod = NewObject<UMyClassAsyncActionBase>();`: 在内存中创建一个新的 `UMyClassAsyncActionBase` 类的实例。4. `NewFeroxNod->temp = ID;`: 将参数 `ID` 的值赋给新实例的 `temp` 成员变量。5. `return NewFeroxNod;`: 返回创建的新实例。6. `void UMyClassAsyncActionBase::Activate()`: 这是在蓝图异步操作基类中定义的虚函数 `Activate` 的实现。它在异步操作开始时被调用。7. `isEqual();`: 调用成员函数 `isEqual()`,执行异步操作逻辑。8. `void UMyClassAsyncActionBase::isEqual()`: 这是自定义的成员函数 `isEqual()` 的实现。在这个函数中,根据 `temp` 成员变量的值进行条件判断。9. `if (temp>0)`: 如果 `temp` 大于 0,表示异步操作成功。10. `Onsuccess.Broadcast(temp,"success! from c++");`: 触发 `Onsuccess` 代理,将 `temp` 的值和一个成功的字符串传递给绑定了这个事件的蓝图。11. `else`: 如果 `temp` 小于等于 0,表示异步操作失败。12. `OnFail.Broadcast(-228,"Fail");`: 触发 `OnFail` 代理,将一个特定的错误码和字符串传递给绑定了这个事件的蓝图。13. `RemoveFromRoot();`: 从内存中移除当前对象。这是一种在异步操作完成后释放实例内存的常用做法。
*/

相关文章:

UE5自定义蓝图节点(二)

继承于UBlueprintAsyncActionBase的类&#xff0c;异步输出节点的实现方法&#xff0c;代码测试正常 .h // Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h" #include "Kismet/BlueprintA…...

Bean容器中的ThreadPoolTaskExecutor需要手动关闭吗

ThreadPoolTaskExecutor 是 Spring 提供的一个方便的线程池实现&#xff0c;用于异步执行任务或处理并发请求。 在使用 ThreadPoolTaskExecutor 作为 Spring Bean 注册到容器中后&#xff0c;Spring 会负责在应用程序关闭时自动关闭所有注册的线程池&#xff0c;所以不需要手动…...

Redis学习路线(3)——Redis的Java客户端

一、如何使用Redis的Java客户端 官方文档&#xff1a; https://redis.io/docs/clients/java/ Java-Redis客户端使用场景Jeids 以Redis命令作为方法名称&#xff0c;学习成本低&#xff0c;简单实现&#xff0c;但是Jedis实例是线程不安全的&#xff0c;多线程环境下需要基于连…...

行车遥控接线图

这个一般只有电工才会用。 主要是 【共线和总电】让人疑惑。 这图实际就是PLC的梯形图。 共电&#xff1a;接主电源。【它串联10A保险丝&#xff0c;再到继电器】 总电&#xff1a;它是所有继电器的公共端。【共电的继电器吸合&#xff0c;共电和总电就直通了。】共电的继电器…...

区块链实验室(11) - PBFT耗时与流量特征

以前面仿真程序为例&#xff0c;分析PBFT的耗时与流量特征。实验如下&#xff0c;100个节点构成1个无标度网络&#xff0c;节点最小度为5&#xff0c;最大度为38. 从每个节点发起1次交易共识。统计每次交易的耗时以及流量。本文所述的流量见前述仿真程序的说明:区块链实验室(3)…...

Shell编程基础(三)环境变量 位置变量 系统内置变量

环境变量 & 环境变量环境变量范围父子进程之间有效指定用户有效所有用户有效 位置变量系统内置变量 环境变量 在脚本种直接定义的变量&#xff0c;只能在当前shell进程中使用 若想要在其他shell进程中使用&#xff0c;可以将变量声明为 环境变量 export 变量名 &#xff…...

P5718 【深基4.例2】找最小值

题目描述 给出 n n n 和 n n n 个整数 a i a_i ai​&#xff0c;求这 n n n 个整数中最小值是什么。 输入格式 第一行输入一个正整数 n n n&#xff0c;表示数字个数。 第二行输入 n n n 个非负整数&#xff0c;表示 a 1 , a 2 … a n a_1,a_2 \dots a_n a1​,a2​……...

C++——STL容器之list链表的讲解

目录 一.list的介绍 二.list类成员函数的讲解 2.2迭代器 三.添加删除数据&#xff1a; 3.1添加&#xff1a; 3.2删除数据 四.排序及去重函数&#xff1a; 错误案例如下&#xff1a; 方法如下&#xff1a; 一.list的介绍 list列表是序列容器&#xff0c;允许在序列内的任何…...

使用for循环输出左上三角、右上三角、左下三角、右下三角、上下三角

1、输出如下图形&#xff1a; #include<stdio.h> int main() {/*输出图形 666666666666666*/for(int i1;i<5;i){for(int j1;j<i;j){putchar(6);}printf("\n"); } return 0; } 2、输出如下图形&#xff1a; #include<stdio.h> int main() {/*输出图…...

CAXA中.exb或者.dwg文件保存为PDF

通常CAXAZ中的文件为.exb或者.dwg格式&#xff0c;我们想打印或者保存为PDF文件格式&#xff0c;那么就用一下的方法&#xff1a; CAXA文件如图所示&#xff1a; 框选出你要打印的图纸&#xff01;&#xff01;&#xff01;&#xff01; 我们选择"菜单"->"…...

华为刷题:HJ3明明随机数

import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main {public static void main(String[] args) {Scanner scan new Scanner(System.in);int N scan.nextInt();int[] arr new int[N];for (int i 0; i < N; i) {int n sca…...

ENVI提取NDVI与植被覆盖度估算

目标是通过ENVI计算植被覆盖度结合ArcGIS出图得到植被覆盖图。 一、植被覆盖度的定义: 植被覆盖度( FractionalVegetation Cover,FVC) 通常定义为植被( 包括叶、茎、枝) 在地面的垂直投影面积占统计区总面积的百分比,它量化了植被的茂密程度,反应了植被的生长态势,是刻画…...

Arm 扩大开源合作伙伴关系,加强投入开放协作

作者&#xff1a;Arm 开源软件副总裁 Mark Hambleton Arm 和我们的生态系统的关键信念之一是与开源社区合作&#xff0c;共创一个高度发达的 Arm 架构&#xff0c;使软件的落地更加稳定&#xff0c;从而让全球数百万开发者能够测试并创建自己的应用。 为此&#xff0c;Arm 支…...

Kubernetes 的核心概念:Pod、Service 和 Namespace 解析

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…...

互联网搜索的学习笔记

1. 参考资料 《Internet Search Tips》《Google Search Operators: The Complete List (42 Advanced Operators)》 2. 预备知识 2.1 查询语法 2.1.1 -&#xff1a;排除符 用于排除指定关键字。例如&#xff0c;如果想搜索“苹果”但不想看到“苹果手机”的结果&#xff0c;…...

vue事件修饰符

vue事件修饰符 1、目标2、语法 1、目标 在事件后面.修饰符名-给事件带来强大功能 2、语法 事件名.修饰符“methods里的函数” 修饰符列表 .stop - 阻止事件冒泡 示例&#xff1a; <template><div id"app"><div click"fatherFn"><…...

【安全】web中的常见编码浅析浏览器解析机制

目录 常见编码 一、ASCII码 二、URL编码 三、Unicode编码 四、HTML实体编码 结合编码理解浏览器解析机制 常见编码 一、ASCII码 ASCII (American Standard Code for Information Interchange&#xff0c;美国信息交换标准代码&#xff09; 计算机内部&#xff0…...

Ceph概述、准备ceph部署环境、cephadm概述、安装Ceph集群、ceph块存储、存储池、rbd镜像管理、ceph客户端配置

day03 day03ceph概述部署Ceph节点准备cephadm准备基础环境安装ceph实现块存储块存储基础存储池镜像ceph客户端 ceph概述 ceph可以实现的存储方式&#xff1a; 块存储&#xff1a;提供像普通硬盘一样的存储&#xff0c;为使用者提供“硬盘”文件系统存储&#xff1a;类似于NFS…...

python selenium爬虫自动登录实例

拷贝地址&#xff1a;python selenium爬虫自动登录实例_python selenium登录_Ustiniano的博客-CSDN博客 一、概述 我们要先安装selenium这个库&#xff0c;使用pip install selenium 命令安装&#xff0c;selenium这个库相当于机器模仿人的行为去点击浏览器上的元素&#xff0…...

el-cascader 数据的回显

<el-cascaderplaceholder"试试搜索":options"allOptions":props"{ multiple: true }"v-model"options"filterable style"width: 80%;max-height:240px;overflow-y:scroll;"></el-cascader> allOptions里面包含…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中&#xff0c;我们渴望一个能激发创想、愉悦感官的工作与生活伙伴&#xff0c;它不仅是冰冷的科技工具&#xff0c;更能触动我们内心深处的细腻情感。正是在这样的期许下&#xff0c;华硕a豆14 Air香氛版翩然而至&#xff0c;它以一种前所未有的方式&#x…...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看

文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...

DiscuzX3.5发帖json api

参考文章&#xff1a;PHP实现独立Discuz站外发帖(直连操作数据库)_discuz 发帖api-CSDN博客 简单改造了一下&#xff0c;适配我自己的需求 有一个站点存在多个采集站&#xff0c;我想通过主站拿标题&#xff0c;采集站拿内容 使用到的sql如下 CREATE TABLE pre_forum_post_…...

【Ftrace 专栏】Ftrace 参考博文

ftrace、perf、bcc、bpftrace、ply、simple_perf的使用Ftrace 基本用法Linux 利用 ftrace 分析内核调用如何利用ftrace精确跟踪特定进程调度信息使用 ftrace 进行追踪延迟Linux-培训笔记-ftracehttps://www.kernel.org/doc/html/v4.18/trace/events.htmlhttps://blog.csdn.net/…...

Qwen系列之Qwen3解读:最强开源模型的细节拆解

文章目录 1.1分钟快览2.模型架构2.1.Dense模型2.2.MoE模型 3.预训练阶段3.1.数据3.2.训练3.3.评估 4.后训练阶段S1: 长链思维冷启动S2: 推理强化学习S3: 思考模式融合S4: 通用强化学习 5.全家桶中的小模型训练评估评估数据集评估细节评估效果弱智评估和民间Arena 分析展望 如果…...

背包问题双雄:01 背包与完全背包详解(Java 实现)

一、背包问题概述 背包问题是动态规划领域的经典问题&#xff0c;其核心在于如何在有限容量的背包中选择物品&#xff0c;使得总价值最大化。根据物品选择规则的不同&#xff0c;主要分为两类&#xff1a; 01 背包&#xff1a;每件物品最多选 1 次&#xff08;选或不选&#…...

计算机系统结构复习-名词解释2

1.定向&#xff1a;在某条指令产生计算结果之前&#xff0c;其他指令并不真正立即需要该计算结果&#xff0c;如果能够将该计算结果从其产生的地方直接送到其他指令中需要它的地方&#xff0c;那么就可以避免停顿。 2.多级存储层次&#xff1a;由若干个采用不同实现技术的存储…...

统计学(第8版)——统计抽样学习笔记(考试用)

一、统计抽样的核心内容与问题 研究内容 从总体中科学抽取样本的方法利用样本数据推断总体特征&#xff08;均值、比率、总量&#xff09;控制抽样误差与非抽样误差 解决的核心问题 在成本约束下&#xff0c;用少量样本准确推断总体特征量化估计结果的可靠性&#xff08;置…...

uniapp获取当前位置和经纬度信息

1.1. 获取当前位置和经纬度信息&#xff08;需要配置高的SDK&#xff09; 调用uni-app官方API中的uni.chooseLocation()&#xff0c;即打开地图选择位置。 <button click"getAddress">获取定位</button> const getAddress () > {uni.chooseLocatio…...