UE4接口
目的
不同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接口的更多相关文章
- [UE4]接口
一个椅子可以被抓起和放下,一扇门可以打开和关上.一个抽屉可以拉开和关上. 椅子.门.抽屉都可以用手拉,然后放下,但是它们的打开和关上的行为是不一样的,它们之间没有继承关系,没法共用“打开”和“关闭”的 ...
- ue4 c++ 接口
使用UE4接口比起普通的高级语言,要多做很多工作,是因为要兼容蓝图的使用,有一些小坑需要注意,开始吧. 1.新建接口类 打开UE4编辑器,与往常一样,新建C++类,然后选择Object继承,然后取名字 ...
- ue4访问php接口
继上一篇介绍ue4打开web url窗口,这篇就来介绍下怎么访问php接口. 要做的两步: 1.c++自己写个接受请求的方法 f Post lhc-URL Request就是自定义的c++方法, /* ...
- UE4使用UMG接口操作界面
原文链接:http://gad.qq.com/article/detail/7181131 本文首发腾讯GAD开发者平台,未经允许,不得转载 UE4的蓝图之强大让人欲罢不能,但是实际在项目的开发中,C ...
- [UE4]引用Grabbable接口
一.当前:可抓取对象的类型是GrabTargetActor 二.修改目标:可抓取对象的类型改成Grabbable. 1.Fand Grab Target的返回值改成Grabbale(变量的数据类型可以 ...
- [UE4]Grabbable接口
首先,面向接口编程和面向对象编程并不是平级的,它并不是比面向对象编程更先进的一种独立的编程思想,而是附属于面向对象思想体系,属于其一部分.或者说,它是面向对象编程体系中的思想精髓之一. 接口是一组规则 ...
- 【UE4 C++ 基础知识】<9> Interface 接口
概述 简单的说,接口提供一组公共的方法,不同的对象中继承这些方法后可以有不同的具体实现. 任何使用接口的类都必须实现这些接口. 实现解耦 解决多继承的问题 蓝图使用 使用方法 三种调用方法的区别 调用 ...
- [UE4]Get All Widgets Of Class、Get All Widgets with Interface,根据类名或者接口UI实例对象
Get All Widgets Of Class.Get All Widgets with Interface,是系统蓝图函数库提供的方法,可以在任何蓝图中使用. 可以方便地获得UI实例对象,进而使用 ...
- [UE4]更通用的接口,将UserWidget作为图标添加到小地图
将图标改成UserWidget添加到小地图,UserWidget支持动画特效,更丰富小地图的功能. 一.在小地图图标结构体中,将Flag数据类型改成UserWidget,删除ImageWidget(类 ...
- [UE4]小地图接口设计
一.地图缩略图片 二.要显示的图标及其对应的Actor 三.比例尺 四.对位点,只需要一个对位点就可以了. 函数名称 SetupMap 函数功能 设置地图 参数类型 MapImage:地图缩略图 Ma ...
随机推荐
- 【Android逆向】滚动的天空中插入smali日志
1. 编写一个MyLog.java 放到一个android工程下,编译打包,然后反编译拿到MyLog的smali代码 package com.example.logapplication; impor ...
- day03--实际操作演示linux系统挂载过程
# 第一步骤: 拥有一个存储设备-光驱,使光驱加载光盘 # 第二步骤: 在linux系统中找到光驱设备 ls -l /dev/cdrom # 第三步骤: 需要将存储设备进行 挂载 挂载命令语法格式: ...
- Vue3学习(二十)- 富文本插件wangeditor的使用
写在前面 学习.写作.工作.生活,都跟心情有很大关系,甚至有时候我更喜欢一个人独处,戴上耳机coding的感觉. 明显现在的心情,比中午和上午好多了,心情超棒的,靠自己解决了两个问题: 新增的时候点击 ...
- 【Azure 存储服务】记一次调用Storage Blob API使用 SharedKey Authorization出现的403错误
问题描述 使用Azure Storag Blob REST API上传文件,用SharedKey作为Authorization出现403错误. 错误消息 b'\xef\xbb\xbf<?xml ...
- 【Azure 应用服务】App Service多个部署槽(Slot)之间,设置Traffic百分比后,如何来判断请求是由那一个槽(Slot)来进行处理呢?
问题描述 当我们部署应用到App Service后,为了实现对生成的最小影响,通常是把新版本部署在一个预生产的槽中,然后进行验证.另一方面,为了进行A/B验证,需要把生成槽的流量,切入一部分到预生产槽 ...
- 小程序开发:接入腾讯云的人像动漫化api接口
接口如下: 图片的传参方式有两种,一种是传图片的base64,一种是图片url: 我打算免费版使用base64,如果付费用户支持永久存储历史的图片记录(图片存储到腾讯云对象存储中). 前端框架我用的u ...
- MAUI调用.so库
必要条件: (一)安装JDK (二)安装NDK (三)安装Android Studio(其实可以不用装也行) 使用Android Studio构件.so包 构件.so包 1. 使用Android st ...
- 使用FastWiki一分钟搭建公司的智能客服
FastWiki 新UI介绍:基于React与LobeUI框架设计 FastWiki 最近引入了基于React的新UI,这是一个重大的更新.在设计新UI时,我们借鉴了LobeUI的框架,并且在接口调用 ...
- C#版开源免费的Bouncy Castle密码库
前言 今天大姚给大家分享一款C#版开源.免费的Bouncy Castle密码库:BouncyCastle. 项目介绍 BouncyCastle是一款C#版开源.免费的Bouncy Castle密码库, ...
- 基于2.4G私有协议的无线取餐系统设及实现
前记 最近在使用TLSR8355做几个小产品.正好赶上有客户需要一个无线取餐系统解决方案.笔者分析了一下需求.该芯片有充足的按键,LED灯,GPIO接口等.做这一款产品是顺道的事情. 需求梳理 功 ...