1. 使用场景:
某个游戏可能有这样一个系统,依靠该系统输入一个触发器体积可以激活陷阱、警告敌人或向玩家奖励点数。这可以通过针对陷阱、敌人和点数奖励器执行"ReactToTrigger"函数来实现。然而,陷阱可能派生自"AActor",敌人可能派生自专门的"APawn"或"ACharacter"子类,点数奖励可能派生自"UDataAsset"。所有这些类都需要共享功能,但它们没有除"UObject"之外的共同上级。在这种情况下,推荐使用接口。
2.接口
#pragma once
#include "ReactToTriggerInterface.generated.h"
UINTERFACE(MinimalAPI, Blueprintable)
class UReactToTriggerInterface : public UInterface
{
GENERATED_BODY()
};
class IReactToTriggerInterface
{
GENERATED_BODY()
public:
/** 在此处添加接口函数声明 */
};
1.使用了UINTERFACE宏
2.继承于UInterface
3.IReactToTriggerInterface和UReactToTriggerInterface同名(XReactToTriggerInterface前缀U改成了I)
4.新增声明的函数是在IReactToTriggerInterface类中
3.c++接口函数
新增函数为c++接口函数,声明为虚函数,以便子类重写
virtual bool ReactToTrigger();
4.蓝图可调用接口函数
新加函数为蓝图可调用接口函数
public:
/**只能在蓝图中实现的React To Trigger版本。*/
UFUNCTION(BlueprintCallable, BlueprintImplementableEvent, Category=Trigger Reaction)
bool ReactToTrigger();
1.加UFUNCTION宏
2.不为虚函数
引用:https://docs.unrealengine.com/5.3/zh-CN/interfaces-in-unreal-engine/