UE4之接口

2023-11-06

参考:

https://docs.unrealengine.com/zh-CN/Programming/UnrealArchitecture/Reference/Interfaces/index.html

接口的模式比较固定,下面就上我定义的接口

// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "CoreMinimal.h"
#include "UObject/Interface.h"
#include "ReactToTriggerInterface.generated.h"

// This class does not need to be modified.
UINTERFACE(MinimalAPI)
class UReactToTriggerInterface : public UInterface
{
	GENERATED_BODY()
};

/**
 * 
 */
class PLUGINS_ME_API IReactToTriggerInterface
{
	GENERATED_BODY()

	// Add interface functions to this class. This is the class that will be inherited to implement this interface.
public:
	UFUNCTION(BlueprintCallable,BlueprintNativeEvent,Category = "LVCate")
	bool ReactToHighNoon();

	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent, Category = "LVCate")
		bool ReactToMidnight();

	UFUNCTION(BlueprintCallable, BlueprintNativeEvent, Category = "LVCate")
	void FuncAsEventNativeEvent();

	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent, Category = "LVCate")
		void FuncAsEventImplementableEvent();

	UFUNCTION(BlueprintCallable, BlueprintNativeEvent, Category = "LVCate")
	void FuncAsEventNativeEventWithParam(int value);

	

};

 

解释一下概率:

BlueprintNativeEvent :这个关键字,说明这个函数既可以蓝图重写,也可以C++重新

BlueprintImplementableEvent:这个关键字,说明这个函数只能蓝图重新

 

可以写一个C++类继承接口:

// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "ReactToTriggerInterface.h"

#include "ReactToTriggerCppImp.generated.h"


UCLASS()
class PLUGINS_ME_API AReactToTriggerCppImp : public AActor,public IReactToTriggerInterface
{
	GENERATED_BODY()
	
public:	
	// Sets default values for this actor's properties
	AReactToTriggerCppImp();

protected:
	// Called when the game starts or when spawned
	virtual void BeginPlay() override;

public:	
	// Called every frame
	virtual void Tick(float DeltaTime) override;

	UFUNCTION(BlueprintCallable, BlueprintNativeEvent, Category = "LVCate")
		bool ReactToHighNoon();
	virtual bool ReactToHighNoon_Implementation() override;

	UFUNCTION(BlueprintCallable, BlueprintNativeEvent, Category = "LVCate")
		void FuncAsEventNativeEvent();
	virtual void FuncAsEventNativeEvent_Implementation() override;


	UFUNCTION(BlueprintCallable, BlueprintNativeEvent, Category = "LVCate")
		void FuncAsEventNativeEventWithParam(int value);
	virtual void FuncAsEventNativeEventWithParam_Implementation(int value) override;



	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent, Category = "LVCate")
		void FuncAsEventCPPImp();


	UFUNCTION(BlueprintCallable, BlueprintNativeEvent, Category = "LVCate")
	void FuncAsEventNativeEventCPPImp();
	void FuncAsEventNativeEventCPPImp_Implementation();

	UFUNCTION(BlueprintCallable, BlueprintNativeEvent, Category = "LVCate")
		void FuncAsEventNativeEventWithParamCPPImp(int value);
	void FuncAsEventNativeEventWithParamCPPImp_Implementation(int value);
};

 

然后在蓝图里面实现一个actor 继承之新写的C++实体类

蓝图实现一个函数可以用如下的脚本:

 再看下面的概念:这里的的函数,是需要在蓝图进行重载的函数

 

 另外,蓝图调用函数有两种方法,一种是事件方式,一种是函数方式

*****************************************20200821*****************************

今天使用发现了一个大问题:BlueprintImplementableEvent

这个声明的函数不能包含参数

 

 上面这种形式是不对的,会导致编译出错。

但是如果写成下面的形式,却是OK 的

	UFUNCTION(BlueprintImplementableEvent, Category = "MqttFun")
	void MessageArrivedCallBack(const FString &topic,const FString &message);

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UE4之接口 的相关文章

随机推荐

  • Java弱引用(WeakReference)的理解与使用

    在Java里 当一个对象被创建时 它被放在内存堆里 当GC运行的时候 如果发现没有任何引用指向该对象 该对象就会被回收以腾出内存空间 或者换句话说 一个对象被回收 必须满足两个条件 1 没有任何引用指向它 2 GC被运行 Java对于简单的
  • Nacos Client2.2.9源码启动问题

    Nacos Client2 2 9源码启动问题 1 开启服务端 源码启动 推荐使用稳定版本作为 服务端 我是用了最新的2 2 1的nacos版本处理了一些问题 现在启动成功 nacos首页 http 192 168 3 111 8848 n
  • 分布式微电网能源交易算法matlab源代码孤岛微电网之间的能源交易问题,提出了一种分布式算法

    分布式微电网能源交易算法matlab源代码 代码按照高水平文章复现 保证正确 孤岛微电网之间的能源交易问题 提出了一种分布式算法 这个问题由几个通过任意拓扑交换能量流的岛屿微网格组成 提出了一种基于次梯度的开销最小化算法 该算法在实际迭代次
  • flutter报错[!] Android toolchain - develop for Android devices (Android SDK version 29.0.3) X Andr

    Flutter官网 问题 出现以下报错 说许可未知 解决方法 1 选择tools gt SDK Manager gt 2 SDK Platforms tab gt Android 9 0 Pie 3 安装 4 选择29 0 3下载重启And
  • 时序预测

    时序预测 MATLAB实现Hamilton滤波AR时间序列预测 目录 时序预测 MATLAB实现Hamilton滤波AR时间序列预测 预测效果 基本介绍 程序设计 参考资料 预测效果 基本介绍 预测在很大程度上取决于适合周期的模型和所采用的
  • flutter 生命周期

    生命周期似乎已经成为前端框架的标配了 然后在flutter中依然有生命周期这个概念 flutter是一个组件加载到卸载的整个周期 不同的生命周期内可以做的事情都是不一样 相信使用过react vue的小伙伴应该都清楚 在更新组件的时候在相应
  • 暗影精灵跑深度学习,环境安装:ubuntu16.04+GTX1050TI+cuda10.1+cudnn+tensorflow1.13

    最近在用暗影精灵跑深度学习 基于tensorflow 随着数据量增多 CPU已经明显太慢 效率太低 所以把系统环境重新安装了一遍 搭建GPU环境 机器平台 I7 1050TI UBUNTU16 04 1 安装驱动 参考之前的一篇博文 暗影精
  • 分表和联合索引

    系统已经在线上运行了一段时间了 虽然有些小bug 但也都能快速的定位并解决 昨天讨论了二期的需求 看起来还有很长的路要走 1 分表 当某个表的记录数大于某个值 比如 一百万 时 mysql查询的效率会下降 通常这时的办法是水平分表 把记录根
  • 学习笔记:数据分析之上海一卡通乘客刷卡数据分析

    一 数据集简介 本文用到的数据集是以上海一卡通乘客刷卡数据为背景 利用Python对数据进行预处理 以Tableau对数据进行可视化 数据集共包含15772842个样本 每个样本包含7个属性 每个属性之间均已逗号分隔 属性 定义 刷卡人 用
  • IDEA项目配置中出现 in module XXX File is included in 4 contexts的解决方法

    问题 in module XXX File is included in 4 contexts 问题翻译 你的配置文件应该在同一个Application context下 解决办法 如下 最后点击 上面有个 笔 的形状的按钮 勾选全部添加
  • vscode下载和安装教程和配置中文插件(超详细)

    目录 前言必读 一 下载步骤 二 安装步骤 vscode安装设置完成 三 安装中文插件 额外的 四 设置vue高亮代码 额外的 前言必读 读者手册 必读 云边的快乐猫的博客 CSDN博客 前言 vscode主要是用于前端的编程工具 其他编程
  • 常用jdbc连接url

    常用JDBC连接数据库方法总结如下 一 JDBC连接DB2 Class forName Com ibm db2 jdbc net DB2Driver String url jdbc db2 dburl port DBname cn Driv
  • Go 基于 Redis + Lua 实现分布式限流器

    Go 基于 Redis Lua 实现分布式限流器 限流算法在分布式系统设计中有广泛的应用 特别是在系统的处理能力有限的时候 通过一种有效的手段阻止限制范围外的请求继续对系统造成压力 避免系统被压垮 值得开发工程师们去思考 实际生活中 限流器
  • discuz search.php 伪静态,discuz门户栏目的伪静态开发,分页也实现伪静态 (目录化)...

    基于代码X3 其它版本源码 请自行验证 Discuz后台的伪静态配置不包含门户频道页的伪静态配置 应该是考虑到频道页的URL地址变化太多的原因 下面 我们就来开发源码 加上这个功能 第一步 加上语言包中的记录 根目录下 source lan
  • collection 转Map

    public static
  • 华为android如何删除,华为手机内存中的“其他”能删除吗?现在就来揭秘

    原标题 华为手机内存中的 其他 能删除吗 现在就来揭秘 安卓手机用了不到两个月 其他 类数据占了10G 我相信不仅仅你一个人会遇到这种情况 如果你经常使用手机 那设备的存储空间当中肯定有很大一部分被归为 其他 类的数据所占据 用的时间越久
  • 字符串7:重复的子字符串

    主要是我自己刷题的一些记录过程 如果有错可以指出哦 大家一起进步 转载代码随想录 原文链接 代码随想录 leetcode链接 459 重复的子字符串 题目 给定一个非空的字符串 s 检查是否可以通过由它的一个子串重复多次构成 示例 示例 1
  • ug12.0安装教程以及UG12许可证安装

    ug12 0安装教程以及UG12许可证安装 附中文版百度云下载地址 知乎 zhihu com 参考该文章 切记 如果忘了修改 安装完成后 计算机右键 属性 高级 环境变量 系统变量中找到SPLM LICENSE 编辑 将值改为27800
  • MMEditing 介绍——注册器

    目录 什么是注册器 注册器工作原理 为什么要用注册器 MMEditing 中的注册器 注册器带来的不便如何解决 什么是注册器 python 的 register 可以理解为一个字典 字典中存储了 class function 的名称和内容
  • UE4之接口

    参考 https docs unrealengine com zh CN Programming UnrealArchitecture Reference Interfaces index html 接口的模式比较固定 下面就上我定义的接口