蓝图接口一般搭配射线检测来使用

一、创建蓝图接口

1.在文件夹下,右键选择blueprints中的蓝图接口buleprint interface,创建完成后重命名为Interface。

ue4蓝图与python通信 ue4蓝图接口事件_自定义

2.双击打开Interface,在蓝图中右侧我的蓝图面板中,已经存在一个默认的函数,可以更改该函数名称,点击 + 号 创建自己要使用的函数。更改函数名称为InterfaceFunction。

ue4蓝图与python通信 ue4蓝图接口事件_自定义_02

3.选中创建的函数,细节面板中的Inputs及Outputus可以设置函数的输入项及输出项(返回值),使用时,会有属性输入,及输出。不同情况不同使用。(后面使用的是 函数名称为 InterfaceFunction,无输入输出项)

4.输入项及输出项的注意点

ue4蓝图与python通信 ue4蓝图接口事件_自定义_03

在接口函数创建,如果有返回值参数,该函数将不能以事件的形式来使用,只能以函数的形式使用,起到一个封装作用,在值传进来的时候,将值进行封装操作,在传出去。

如果没有返回值参数,无论有没有输入项参数,都可以用事件的形式来使用,起到触发的作用,也可以用函数的形式来使用。

4.函数创建完成后点击编译。(一定要编译,不然可能后续调用接口函数会失败)

二、使用蓝图接口

1.创建蓝图类,在视口中创建一个cube,然后再蓝图类中的工具栏选择类设置,在细节面板的接口项中,点击添加,搜索选择自定义的蓝图接口名称。(这里选择的是创建蓝图接口时蓝图接口的命名(Interface))

ue4蓝图与python通信 ue4蓝图接口事件_自定义_04

    

ue4蓝图与python通信 ue4蓝图接口事件_自定义_05

2.打开蓝图类中的事件图表,将创建的蓝图接口中的函数,以事件节点的形式进行创建,右键搜索自定义的函数名称(InterfaceFunction)

ue4蓝图与python通信 ue4蓝图接口事件_封装_06

3.当触发事件时,打印绿色的提示语(也可以克隆多个蓝图类,对每个蓝图类中的打印语句颜色进行更改,这里是在文件夹中克隆蓝图类,而不是一个蓝图类在场景中克隆多个物体。)

ue4蓝图与python通信 ue4蓝图接口事件_搜索_07

4.与射线配合使用,当射线检测到物体时,如果检测到了物体就去调用自定义的函数。蓝图空白处右键搜索 Interface Function节点,会显示有消息的节点可创建。是因为该函数会对物体进行发送消息,如果物体中有该接口事件,则会调用物体中的蓝图类中的事件执行处理,如果没有该接口事件,则不会有任何反应。(如果蓝图类中,只存在函数事件节点,没有执行其他逻辑,并不会因为没有逻辑就不会触发事件响应,事件会响应,只是物体没有任何反应)

ue4蓝图与python通信 ue4蓝图接口事件_ue4蓝图与python通信_08

5.使用branch节点进行对检测到的物体判断(射线是否检测到了物体)。

ue4蓝图与python通信 ue4蓝图接口事件_搜索_09

5.编译后,运行

ue4蓝图与python通信 ue4蓝图接口事件_封装_10

我创建了两个蓝图类,并分别调整了颜色

ue4蓝图与python通信 ue4蓝图接口事件_ue4蓝图与python通信_11

  

ue4蓝图与python通信 ue4蓝图接口事件_自定义_12

 

ue4蓝图与python通信 ue4蓝图接口事件_封装_13

ue4蓝图与python通信 ue4蓝图接口事件_ue4蓝图与python通信_14

总结:

1蓝图接口是一对多,只需要发送一个信号,碰到的物体就会尝试建立通信。

2.最重要一点就是创建蓝图接口后,想要让物体使用我们自定义的蓝图接口中的函数,就必须在该物体的蓝图类中的 类设置 的接口属性中,Add我们创建的接口,这样才可以在蓝图中以事件的形式使用接口中的函数。

3.注意创建接口函数时的输入项及输出项添加参数后的不同效果:

如果有返回值参数,该函数将不能以事件的形式来使用,只能以函数的形式使用,起到一个封装作用,在值传进来的时候,将值进行封装操作,在传出去。

如果没有返回值参数,无论有没有输入项参数,都可以用事件的形式来使用,起到触发的作用,也可以用函数的形式来使用。

4.步骤分解如下:

创建蓝图接口(Interface)->

双击打开蓝图接口 创建函数(function)->

编译 ->

创建蓝图类->

打开蓝图类在类设置中Add蓝图接口(Interface)->

编译->

在蓝图类中创建function事件节点->

完善执行处理逻辑->

在其他蓝图中完成逻辑,使用function(消息)节点,为了获取到物体后,对该物体发送消息,尝试建立通信,以使物体做出对应的动作。