通过继承Unreal中的接口可以使不同的类有某种共同特性,这里记录一下接口的使用方式。Unreal中的接口分为两种:C++接口和蓝图接口,C++接口可在蓝图中使用;蓝图中的接口不能直接在C++中使用,这里探究一下他们的关系:
1.C++的接口在C++中使用:
新建C++类,继承UnrealInterface:
接口中可以声明虚函数或者纯虚函数:
赋值为0即为纯虚函数,子类必须实现纯虚函数:
非纯虚函数可以在父类中实现,子类自由选择是否重写:
调用:
2.蓝图中使用蓝图接口:
新建蓝图接口,继承BlueprintInterface:
声明接口函数TestInterface:
在蓝图Actor中添加蓝图接口TestBlueprintInterface:
actor蓝图自动从接口中生成事件,可以在此事件中编写要执行的逻辑:
3.在蓝图中使用C++接口,需要给接口函数添加BlueprintImplementableEvent或者BlueprintNativeEvent和BlueprintCallable标记:
当C++Actor继承此接口,然后蓝图Actor继承C++Actor时,接口位于继承接口面板中:
此时可以选择是否重写父类中的BlueprintNativeEvent。
当蓝图actor直接实现C++接口时,接口位于ImplementedInterface面板中,并需要重写接口函数:
注意,蓝图类通过上面这种方式的接口实现,无法在C++中直接调用,只能判断当前类是否实现了此接口,而不能转换接口类型成功:
纯蓝图类实现的接口在C++中只能通过GetClass()->ImplementsInterface(U接口类:StaticClass)查询,而不能转换接口类型成功,也就是上面红框内不会执行;而C++或继承C++类实现接口的类如CustomActor可以转换成功。注意,C++调用给蓝图用的函数,要通过Excute_函数名调用。