官方链接

目的

不同Actor对象具有同一个功能,比如角色按F键可以实现开门,开车,与NPC沟通等操作。其本质就是让所有的Actor对象除了继承UObject以外,再继承这个接口类。

接口的声明

宏的改变:UCLASS -> UINTERFACE

父类的改变:UObject -> UInterface

在C++中利用引擎创建的接口类实际上是一个空白类,它的作用是将该接口暴露给UE的反射系统。具体的实现是需要在这个接口类中定义一个新的类,并且有严格的命名要求,相同的类名以及将U变为I。然后在这个IInterfaceName的类中编写函数实现。其他继承的也是这个类中的函数(public IInterfaceName)。

#pragma once

#include "ReactToTriggerInterface.generated.h"

UINTERFACE(MinimalAPI, Blueprintable)
class UReactToTriggerInterface : public UInterface
{
GENERATED_BODY()
}; class IReactToTriggerInterface
{
GENERATED_BODY() public:
/** 在此处添加接口函数声明 */
//方法必须为public才能被继承
};

接口函数的声明和使用

接口类只提供功能,具体实现方式需要在继承的Actor类中编写

在接口类中定义虚函数,然后再继承类中覆盖。

//在接口类的IInterfaceName类中
public:
virtual void Func1(); //.cpp
void IInetrfaceName::Func1(){}; //在继承该接口的Actor类中
class AActor:public IInterfaceName
{
public:
virtual void Func1() override;
}; //.cpp
void AActor::Func1(){Func;};

如果要实现在蓝图中可以调用需要添加UFUNCTION(BlueprintCallable),还必须使用 BlueprintImplementableEvent(只能在蓝图中实现) 或 BlueprintNativeEvent(可以在蓝图或C++实现) 说明,而且函数不能为虚拟的。

UE4接口的更多相关文章

  1. [UE4]接口

    一个椅子可以被抓起和放下,一扇门可以打开和关上.一个抽屉可以拉开和关上. 椅子.门.抽屉都可以用手拉,然后放下,但是它们的打开和关上的行为是不一样的,它们之间没有继承关系,没法共用“打开”和“关闭”的 ...

  2. ue4 c++ 接口

    使用UE4接口比起普通的高级语言,要多做很多工作,是因为要兼容蓝图的使用,有一些小坑需要注意,开始吧. 1.新建接口类 打开UE4编辑器,与往常一样,新建C++类,然后选择Object继承,然后取名字 ...

  3. ue4访问php接口

    继上一篇介绍ue4打开web url窗口,这篇就来介绍下怎么访问php接口. 要做的两步: 1.c++自己写个接受请求的方法 f Post lhc-URL Request就是自定义的c++方法, /* ...

  4. UE4使用UMG接口操作界面

    原文链接:http://gad.qq.com/article/detail/7181131 本文首发腾讯GAD开发者平台,未经允许,不得转载 UE4的蓝图之强大让人欲罢不能,但是实际在项目的开发中,C ...

  5. [UE4]引用Grabbable接口

    一.当前:可抓取对象的类型是GrabTargetActor 二.修改目标:可抓取对象的类型改成Grabbable. 1.Fand Grab Target的返回值改成Grabbale(变量的数据类型可以 ...

  6. [UE4]Grabbable接口

    首先,面向接口编程和面向对象编程并不是平级的,它并不是比面向对象编程更先进的一种独立的编程思想,而是附属于面向对象思想体系,属于其一部分.或者说,它是面向对象编程体系中的思想精髓之一. 接口是一组规则 ...

  7. 【UE4 C++ 基础知识】<9> Interface 接口

    概述 简单的说,接口提供一组公共的方法,不同的对象中继承这些方法后可以有不同的具体实现. 任何使用接口的类都必须实现这些接口. 实现解耦 解决多继承的问题 蓝图使用 使用方法 三种调用方法的区别 调用 ...

  8. [UE4]Get All Widgets Of Class、Get All Widgets with Interface,根据类名或者接口UI实例对象

    Get All Widgets Of Class.Get All Widgets with Interface,是系统蓝图函数库提供的方法,可以在任何蓝图中使用. 可以方便地获得UI实例对象,进而使用 ...

  9. [UE4]更通用的接口,将UserWidget作为图标添加到小地图

    将图标改成UserWidget添加到小地图,UserWidget支持动画特效,更丰富小地图的功能. 一.在小地图图标结构体中,将Flag数据类型改成UserWidget,删除ImageWidget(类 ...

  10. [UE4]小地图接口设计

    一.地图缩略图片 二.要显示的图标及其对应的Actor 三.比例尺 四.对位点,只需要一个对位点就可以了. 函数名称 SetupMap 函数功能 设置地图 参数类型 MapImage:地图缩略图 Ma ...

随机推荐

  1. win32 - 使用Safer API创建受限的令牌

    #include <Windows.h> #include <WinSafer.h> #include <stdio.h> #include <sddl.h& ...

  2. 【Android 逆向】【ARM汇编】 函数的栈帧

    1. 函数的调用约定 ARM32 参数1-4 放入r0-r3 剩下的入栈,函数返回值放入r0 ARM64 参数1-8 放入X0-X7 剩下的入栈,函数返回值放入X0 (浮点数是放入 Dn 或 Sn) ...

  3. 【Android逆向】frida 破解 滚动的天空

    1. apk 安装到手机中 2. 玩十次之后,会提示 充值 3. adb shell dumpsys window | grep mCurrentFocus 查看一些当前activity是哪一个 是 ...

  4. 记一次 splice 导致 io.Copy 阻塞的排查过程

    记一次 splice 导致 io.Copy 阻塞的排查过程 简而言之,net.TCPConn 的 ReadFrom 零拷贝实现 splice 在 1.21.0 - 1.21.4 删除了 SPLICE_ ...

  5. 【Java复健指南02】方法的注意事项

    [方法] 方法基本内容 √访问修饰符 ​ (作用是控制方法使用的范围) ​ 可选,[有四种:public\protected\默认\private],具体在后面说 √返回类型 ​ 1.一个方法最多有一 ...

  6. 从零开始写 Docker(四)---使用 pivotRoot 切换 rootfs 实现文件系统隔离

    change-rootfs-by-pivot-root.png 本文为从零开始写 Docker 系列第四篇,在mydocker run 基础上使用 pivotRoot 系统调用切换 rootfs 实现 ...

  7. 如何提取html中的token?

    通过正则表达式提取(适用于提取文本结果): Re.seach()提取一个值,通过下标取值 Re.findall()提取多个值,通过下标取值 Resp= reques.get(url);print(re ...

  8. Linux系统查看主机性能

    查看主机的CPU性能: cat  /proc/cpuinfo cat /proc/meminfo |grep MemTotal    内存信息 查看物理cpu个数:cat /proc/cpuinfo ...

  9. k8s实战之MySQL单实例部署

    前面我们学习了k8s入门系列文章,了解了k8s的一些基础概念以及怎么使用.本篇文章将进行一个小小的实战,使用k8s来部署单机版的mysql数据库,基本涵盖到前面讲到的Namespace.Pod.Dep ...

  10. 一文学会JDBC实现java和mySQL的数据连接(尚硅谷学习课程代码+笔记+思路总结)

    JDBC是指数据库连接技术,用于java连接mySQL等数据库.本文详细介绍了尚硅谷课程中JDBC的学习内容和补充知识. 概述 java语言只提供规范接口,存在于java.sql.javax.sql包 ...