|
本页面的内容:
接口声明
接口说明符
元数据修饰符
在 C++ 中实现接口
确定特定 Actor 是否实现接口
蓝图可实现类
接口类的声明和常规类的声明非常相似。语法中唯一的主要区别是描述符被传递到 UINTERFACE</code> 宏,而非 UCLASS</code> 宏。
UINTERFACE([specifier, specifier, ...], [meta(key=value, key=value, ...)])class ClassName :ParentName接口声明
在 .h 文件中(如 ItemInterface.h</code>):
#pragma once#include "ItemInterface.generated.h"UINTERFACE(Blueprintable)class UItemInterface : public UInterface{ GENERATED_UINTERFACE_BODY()};class IItemInterface{ GENERATED_IINTERFACE_BODY()public: UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category="Item") FItemStruct GetItem() const;};
在 .cpp 文件中(如 ItemInterface.cpp</code>):
#include "ItemInterface.h"UItemInterface::UItemInterface(const FObjectInitializer ObjectInitializer) :Super(ObjectInitializer){}
声明包含一个类的标准 C++ 类声明。在标准声明上,描述符(如类说明符和元数据)将被传递到 UINTERFACE 宏。它们用于为被声明的接口创建 UInterface,它可被看作引擎对类的专有表达。而且,GENERATED_UINTERFACE_BODY() 宏必须被放置在类体的最前方。
对于引擎将要识别的接口,必须创建两个类,一个继承自 UInterface 的 UINTERFACE 类、一个纯粹的接口类。
UINTERFACE 需带 U 前缀,因其从 UObject 扩展而来。接口需以 I 为前缀。
如需要蓝图实现此接口,则 Blueprintable</code> 说明符为必需。
接口说明符
在声明接口时,声明上可添加修饰符以控制引擎和编辑器的不同方面的接口表现。接口使用声明类时的修饰符的子集。
Blueprintable
DependsOn
MinimalAPI
NotBlueprintable
元数据修饰符
对元数据修饰符的使用按常规类、函数和接口修饰符而不同。
CannotImplementInterfaceInBlueprint
在 C++ 中实现接口
在 C++ 中声明类时,直接从接口(并非 UInterface 类)进行继承。
class AItem : public AActor, public IItemInterface{ GENERATED_BODY()public: FItemStruct GetItem_Implementation() const;};确定特定 Actor 是否实现接口
为保证 C++ 和实现接口的蓝图类之间的兼容性,使用以下代码:
obj-GetClass()-ImplementsInterface(UItemInterface::StaticClass());
必须使用类的 UInterface 版本确定接口是否已实现。
蓝图可实现类
如需蓝图实现此节点,必须使用 Blueprintable</code> 元数据说明符,接口中的每个函数必须为一个 BlueprintNativeEvent</code> 或 BlueprintImplementableEvent</code>。否则,实现接口的蓝图类可能无法实现接口的所有方法。
|
|