这部分官方文档写的很明白,建议直接去看官方文档:

虚幻引擎中的接口 | 虚幻引擎5.0文档 (unrealengine.com)

概述:

  • 简单的说,接口提供一组公共的方法,不同的对象中继承这些方法可以有不同的具体实现
  • 任何使用接口的类都必须实现这些接口
  • 实现解耦
  • 解决多继承的问题

C++使用接口

定义接口

声明蓝图可调用接口函数

  • 用UFUNCTION宏BlueprintCallable声明蓝图可调用,还必须使用BlueprintImplementableEvent或BluepeintNativeEvent说明,而且函数不能为虚函数
  • 通过声明virtual虚函数,是的派生类可重载

代码

ReactToTriggerInterface.h

#pragma once
#include "CoreMinimal.h"
#include "UObject/Interface.h"
#include "ReactToTriggerInterface.generated.h"// 无需更改
// UINTERFACE类不是实际的接口;它是一个空白类,它的存在只是为了向虚幻引擎反射系统确保可见性。
UINTERFACE(MinimalAPI)
class UReactToTriggerInterface : public UInterface
{GENERATED_BODY()
};//开头字母"U"必须改为"I"。
class TIPS_API IReactToTriggerInterface
{GENERATED_BODY()public:// 纯虚函数,实现类必须实现接口virtual void ReactToTrigger_PureVirtual() = 0;// 虚函数,在接口本身的 .h 或 .cpp 文件中提供默认实现.实现类可覆盖virtual void ReactToTrigger_Virtual();//实现类可以在蓝图和C++中实现接口UFUNCTION(BlueprintCallable, BlueprintNativeEvent, Category="Trigger Reaction")void ReactToTrigger_NativeEvent1(int32 number);//实现类可以在蓝图和C++中实现接口UFUNCTION(BlueprintCallable, BlueprintNativeEvent, Category = "Trigger Reaction")bool ReactToTrigger_NativeEvent2(int32 number);//实现类在蓝图中实现接口UFUNCTION(BlueprintCallable, BlueprintImplementableEvent, Category = "Trigger Reaction")void ReactToTrigger_ImplementableEvent();
};

ReactToTriggerInterface.cpp

#include "ReactToTriggerInterface.h"
void IReactToTriggerInterface::ReactToTrigger_Virtual()
{// unimplemented(); //该宏将在执行代码行时发出调试语句, 中断UE_LOG(LogTemp, Warning, TEXT("ReactToTrigger_Virtual 被调用, From 接口本身"));
}

实现接口

MyDrone.h

#include "ReactToTriggerInterface.h"
#include "MyDrone.generated.h"UCLASS()
class TIPS_API AMyDrone : public ADrone, public IReactToTriggerInterface
{GENERATED_BODY()public:virtual void ReactToTrigger_PureVirtual() override;//可蓝图调用,貌似通用写法UFUNCTION(BlueprintCallable, BlueprintNativeEvent, Category = "Trigger Reaction")void ReactToTrigger_NativeEvent1(int32 number);virtual void ReactToTrigger_NativeEvent1_Implementation(int32 number) override;//蓝图可调用,,貌似和上面没区别virtual bool ReactToTrigger_NativeEvent2_Implementation(int32 number) override;//void ReactToTrigger_ImplementableEvent();需要在蓝图实现
};

MyDrone.cpp

#include "MyDrone.h"void AMyDrone::ReactToTrigger_PureVirtual()
{UE_LOG(LogTemp, Warning, TEXT("ReactToTrigger_PureVirtual 被调用, From MyDrone"));
}void AMyDrone::ReactToTrigger_NativeEvent1_Implementation(int32 number)
{UE_LOG(LogTemp, Warning, TEXT("ReactToTrigger_NativeEvent1 被调用, From MyDrone"));
}bool AMyDrone::ReactToTrigger_NativeEvent2_Implementation(int32 number)
{UE_LOG(LogTemp, Warning, TEXT("ReactToTrigger_NativeEvent2 被调用, From MyDrone"));return true;
}

虚幻引擎中的接口 | 虚幻引擎5.0文档 (unrealengine.com)

UE4 C++:Interface接口相关推荐

  1. interface接口_golang 基础(Four) 接口进阶

    参考 Understanding Go Interface 感谢 francesc 分享 接口 我们编程中少不了对接口使用和设计,无论你是使用哪种语言或多或少都会使用到**接口**.即使你说明重来没有 ...

  2. 【C# interface接口】模拟MP3/AVI播放器

    注意:本程序仅模拟播放器功能,点击按钮时只会输出一句话,并未真正实现播放. 对接口的理解,见我的另一篇博客,里面有详细说明:[C# interface接口]对接口的理解.接口的使用方式(最通俗的解释) ...

  3. PHP interface 接口继承(一丶单接口继承)

    接口可以认为是规范类的模板,具体怎么运行操作还是需要看继承的子类怎么写,具体需要注意的的地方与写法如下所示: interface 接口中的方法必须为 public 公开的: <?php inte ...

  4. Interface接口自动化登录图文验证码问题的解决办法

    简介:我这段时间新进了一家医疗公司,为了测试的质量和效率能提升,我们需要做接口自动化测试,碰到的第一个拦路虎就是登录时的验证码,本来我是叫开发帮忙在测试环境去掉,线上环境再加上,但是开发觉得麻烦,说为 ...

  5. Golang interface 接口详细原理和使用技巧

    文章目录 Golang interface 接口详细原理和使用技巧 一.Go interface 介绍 interface 在 Go 中的重要性说明 interface 的特性 interface 接 ...

  6. Java面向对象之interface接口

    文章目录 (1)基本概念 (2)语法格式 (3)基本原则 (4)注意事项 (5)案例 (6)JDK内置的两大接口 (7)抽象类和接口的区别 提示:以下是本篇文章正文内容,Java系列学习将会持续更新 ...

  7. 12、Interface (接口)克隆

    文章目录 (一)Interface Note 1.概念 2.基本语法 声明接口 继承接口 实现接口 3.特点 4.抽象类与接口的区别 共同点 区别 选择 5.克隆 附:抽象类 PK 接口 (二)Int ...

  8. Go语言-Go interface 接口的最佳实践

    文章目录 Go语言-Go 接口的最佳实践 什么是Golang中的interface 编写接口的最佳实践 1. 保持interfaces足够小 2. Interfaces Should Have No ...

  9. abstract(抽象类)与interface(接口)的区别

    文章目录 前言 一.abstract(抽象类) 1.用abstract关键字修饰方法 1.用abstract关键字修饰类 二.interface(接口) 总结 前言 abstract(抽象类)与int ...

  10. abstract类与interface接口的区别

    abstract类与interface接口的区别:     abstract类:在一个类中的方法被abstract关键字修饰并且这个方法没有方法体,则这个类也必须使用abstract关键字修饰则这个类 ...

最新文章

  1. 2月书讯 | 冬奥结束看什么?看看“天花板”级别新作!
  2. SQL 2005 数据库镜像
  3. MySQL(二)数据的检索和过滤
  4. java web 静态_「Java Web」主页静态化的实现
  5. 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 14丨报告的记录 I【难度简单】
  6. 今年第一个项目来说NET的中间语言
  7. Linux C解析命令行参数代码
  8. Python中的Monkey Patch(猴子补丁)
  9. VB6 中将数据导出到 Excel 提速之法
  10. LinkedHashMap 底层分析
  11. SpringBoot使用thymefeal出现No mapping for GET /xxx的解决办法
  12. Visual Basic 6.0(VB6.0)最详细安装教程
  13. 华为机顶盒E6108 V9-V9U-V92-V97免拆机-刷机固件及教程
  14. php 显示探针_PHP探针
  15. centos7 下载软件包
  16. 如何在Google Play 当中使用ASO?google play aso
  17. 解决:当笔记本连接WIFi,电脑可以打开QQ等,但是不能打开网页,显示DNS错误
  18. mysql外键级联操作_Mysql 外键级联
  19. 正确认识智能视频分析技术
  20. 实时计算 java基础:类的结构之五:内部类

热门文章

  1. 抓linux肉鸡漏洞,利用MS08067远程溢出漏洞抓肉鸡(3)
  2. (三)云计算技术学习--OpenStack之KeyStone
  3. 条件语句与循环语句:将数字一二三四五六七八九十转化成汉字大写的壹, 贰,叁,肆,伍,陆,柒,捌,玖,拾
  4. Diffusion扩散模型简述 + 代码demo
  5. 网页游戏脱机脚本制作视频教程
  6. ttc文件linux安装,Linux当中如何安装字体?
  7. 啦啦外卖独立版41.4+全插件+可运营版本+开源(亲测100%可用)
  8. 函数项数列以及函数项级数收敛判别
  9. SIMULATE ANNEAL
  10. MFC入门之 Ribbon界面设计