欢迎光临散文网 会员登陆 & 注册

十七、接口

2023-02-17 11:37 作者:爱玩UE5的小哥哥  | 我要投稿

一.什么接口?怎么理解接口?

简单的说,接口提供一组公共的方法,不同的对象中继承这些方法后可以有不同的具体实现。(这不就是多态吗?)

用具体例子来解释:

上面代码中dog类和cat类,同样实现了IDamageable接口,它们都具备了受伤生命值减少的特性,只是他们受伤后的具体表现略有不同:狗直接死亡,猫复活9次后就死了(多态,不同的类对于接口的实现有所不同),但是他们最终都可能会因受伤过重而死亡(这里体现接口的约束力).

二.接口的意义

1.任何使用接口的类都必须实现这些接口。

2.实现解耦

如上方代码,Killer无需关心具体是对猫还是狗造成伤害:

对狗造成伤害,伤害值超过狗的生命值上限,狗会死亡

对猫造成伤害,伤害值超过猫的生命值上限,猫会减少一次复活机会然后重生.

这就体现了调用者(Kill)和实现者(dog,cat)之间并没有耦合,即不管我打的是谁,只要我打的够狠,不管他是谁,他都会死,区别是一枪死还是10枪死而已

3.解决多继承的问题

三.蓝图中的接口

蓝图的新建接口相当于定义接口,在一个蓝图类里面Add接口并且编写接口的逻辑相当于实现接口函数,在另一个类里面执行接口函数相当于调用接口

1.蓝图接口的创建与实现

BP_Interface
无返回值的接口,实现后是一Even的形式出现

2.蓝图接口调用

获取有接口的多有actor

判断某个Object是否实现某个接口

四.C++中的接口

1.UE的接口类创建接口


Cpp_Interface

空白类创建接口

自定义接口格式:

#include "空类名.generated.h"

UINTERFACE(MinimalAPI)
class  U自定义接口名:public UInterface
{
  GENERATED_BODY()
};

class 项目名_API I与上面的自定义接口名一致
{
  GENERATED_BODY()
public:
  //在此处添加接口函数声明
};

空类自定义接口:MyNoonClassInterface

.h文件

.cpp文件

重新编译C++项目即可在UE的C++Classes中看到这个接口


2.C++中声明接口函数

Cpp_Interface.h文件

Cpp_Interface.cpp文件

2.蓝图中实现接口函数与调用接口函数

新建一个蓝图类BP_ImpInterface(意思是蓝图实现接口函数)

①蓝图实现C++的接口函数

②蓝图调用蓝图实现C++的接口函数

新建蓝图类BP_ExecuteInterface

成功执行C++声明的4个接口函数

3.C++中实现接口函数与调用接口函数

①C++实现接口函数

新建一个继承与Actor的C++类:Cpp_ImpInterface(C++实现接口函数)

Cpp_ImpInterface.h文件

Cpp_ImpInterface.cpp文件

②C++调用接口函数

创建一个调用C++接口的类:Cpp_CallCppInterface

.h文件

.cpp文件

C++中成功调用接口






十七、接口的评论 (共 条)

分享到微博请遵守国家法律