Choose your operating system:
Windows
macOS
Linux
在蓝图中使用接口
使用 蓝图接口(Blueprint Interfaces) 提供了一种实现与多个不同类型的对象交互的通用方法, 这些对象都共享某些特定的功能。这意味着您可以拥有完全不同类型的对象,比如一辆车和一棵树,它们有一个共同的特点, 那就是它们都可以被武器射击并受到伤害。通过创建包含"OnTakeWeaponFire"函数的蓝图接口,并让车和树都实施该蓝图接口, 您可以将车和树视为同一类型, 在它们被击中时只需调用"OnTakeWeaponFire"函数。
添加接口
蓝图接口以及在本地代码(C++)中定义的接口都可以添加到任何类型的 蓝图 。
-
从主关卡编辑器(Main Level Editor)窗口中,打开您项目中的 关卡蓝图(Level Blueprint) 。
-
单击顶部 工具栏 中的 类设置(Class Settings) 按钮。
-
在右侧的 细节(Details) 面板上,找到 接口(Interfaces) 类别。
-
单击 添加接口(Add Interface) 按钮以查看可用接口的列表,然后选择要使用的接口。
可单击 已实施的接口(Implemented Interfaces) 列表上各个接口旁的 按钮以移除该接口。您还可以从蓝图接口(Blueprint Interfaces)迁移到普通的蓝图函数。有关更多信息,请参阅
接口类别中的 已继承的接口(Inherited Interfaces) 部分自动填充此对象继承的任何接口(即在派生当前蓝图的蓝图中实施)。
实施接口成员
当您将一个接口添加到蓝图中后,该蓝图必须实施该接口的各项功能,以便在调用时 使它们执行任何操作。通过在 EventGraph 中为接口函数放置 事件(Event) 节点来可满足此要求。 连接到事件(Event)的节点定义函数的功能或实施。
-
在蓝图的 EventGraph 中 右键单击 ,并选择 添加事件(Add Event)> 事件...(Event...)
选择要添加的事件类型,该事件随即将添加到图表中。
-
创建连接到该事件的可执行引脚的节点网络,以向其提供功能。
调用接口函数
接口的函数通过使用 接口消息(Interface Message) 节点来执行,这些函数的外观和行为都与普通 函数调用 类似,而不同之处仅在于,如果目标没有实施该接口, 它们可能会失败但不发出任何通知。
调用其他蓝图上的接口函数
接口可用于允许不同蓝图之间的通信。您可以在其他蓝图上调用来自单个接口的函数。这可以在满足2个条件时完成:
-
这两个蓝图均实施了具有所需函数的相同接口。
-
调用方蓝图知道另一个蓝图的游戏内实例的名称。
在事件图表中创建接口函数节点时,您经常会看到上下文菜单中列出的两个版本的函数。
需要注意的是, 调用函数(Call Function) 下列出的版本是一个本地版本,其仅用于在此蓝图中调用。
接口消息(Interface Messages) 下列出的版本旨在通过实施相同接口的其他蓝图上的接口调用函数。
节点标题下面有一些标签,以帮助进行区分:
|
|
---|---|
本地版本。 |
接口消息(Interface Message)版本。 |
调用接口消息函数(Interface Message Function)需要您提供调用该函数时所在的相应蓝图的实例。
注意,在此图像中,我们将发送另一个蓝图作为目标输入。这将调用所提供的蓝图上的函数。如果该蓝图未实施接口,则什么都不会发生。
若要指定存在于关卡内的蓝图,最好是创建一个类型为"Actor"的公共变量,并使用关卡编辑器的 细节(Details) 选项卡在该变量的值中指定适当的蓝图。
调用关卡蓝图上的接口函数
接口还可允许子关卡之间使用 获取流送关卡(Get Streaming Level) 节点进行通信。如果关卡已加载且有效,则 接口消息(Interface Message) 将调用以该关卡的蓝图脚本为目标的函数。
覆盖接口函数
接口函数最重要的方面之一是,由于它们没有自己的实施,因此可以为实施接口的每个蓝图独立定义它们的功能。
一旦蓝图实施了某个接口,则该接口的函数将出现在 我的蓝图(My Blueprint) 面板中。
如果您 双击 该函数,它将在蓝图编辑器中打开。这显示了该函数的本地实施。这里定义的任何功能对于这个蓝图都是唯一的。通过这种方式,您可以为实施该接口的每个蓝图定义自定义功能。
例如,在此图像中,我们看到一个在蓝图中打开的基本接口函数。现在,这个函数没有执行任何操作。
我们可以创建一个简单的网络来进行数字比较,然后输出值,正如下图所示。
现在,当您在本地调用该函数时,它将采用一个浮点数,并将其与数字10进行比较,然后将布尔结果输出到屏幕上。