UE4蓝图通信-蓝图接口

蓝图接口

除了最常用的cast to蓝图节点可以实现通信以外,进阶的通信方式就是蓝图接口

  • 目的:与多个对象中的特定几个对象进行通信
  • 方式:对检测到的对象发送消息
  • 消息:发出的消息是接口消息,只有设置了对应接口的对象才会响应,其他的对象发呆

球形检测SphereTraceByChannel

在这里插入图片描述

  • start:第一个球的球心点
    end:下一个球的球心点
    radius:每个球体的半径
    注意这个检测生成的检测区域是胶囊体形状的,第一个球到第二个球的中间区域是个圆柱
    利用接口蓝图实现通信必须要借助检测通道来检测目标对象,从而发送信息

Blueprint interface具体步骤

  1. 创建一个蓝图接口
    内容浏览器中新建一个蓝图接口,命名规则一般跟功能相符合,比如目标是交互式的对象 那就命名BP_interactive 用形容词命名。双击点开命名一个接口函数后关闭,注意视窗里的节点是灰色 因为不同对象会执行不同命令,要到具体对象里去实现,这里只是一个声明。有点多态那味儿了
  2. 设置目标蓝图类(接收者)的蓝图接口
    打开要设置接口的蓝图类中,点开class setting 然后看到interfaces,在这里添加BP_interactive
    在这里插入图片描述
  3. 在发信者(玩家的角色)蓝图类中写逻辑
    在工作蓝图中(发出消息的蓝图类)右键调出BP_interactive 下的第一个接口函数,出现一个带信封的蓝图节点,啥意思?就是发信息的意思。发信息给谁?球体检测抓住谁就发给谁。
    在这里插入图片描述
  4. 回到接受者蓝图中
    目标蓝图类中右键找出BP_interactive 下的第一个对应的那个事件,写具体实现即可
    在这里插入图片描述
    在这里插入图片描述
  • 总结:有点像C++里的多态但是不完全一样,这里不涉及父子类关系。
    接口蓝图类就是一个接口类,这个类中只能是声明。然后在目标蓝图类写具体实现,然后调用者里面用检测通道检测目标对象,不管检测到谁,都能在后连接口蓝图中的函数接口,如果检测到的对象包含了这个接口且有具体实现,则通信成功;如果检测到的对象没有设置这个接口,则无作为。

———————————————到此为止简单地实现了一下通信———————————————
—————————————————下面讨论更多一点东西—————————————————

接口蓝图类中添加输入引脚

  • 打开接口蓝图BP_interactive,在第一个函数下添加一个输入
    在这里插入图片描述
  • 接口蓝图类中变成这样
    在这里插入图片描述
  • 然后发信者蓝图中效果如下,这样可以实现发送消息的同时给接收者传递一些实际的信息以供使用
    在这里插入图片描述
  • 然后接收者蓝图中对应的事件会增加一个输出引脚,接收来自发信者的传入的信息,注意接收者中的事件依然是事件,与之前没有输入引脚的时候一样的。下面这种情况就会变得不太一样

接口蓝图类中添加输出引脚——事件变成函数

  • 添加两个输入引脚,一个输出引脚Output1如下
    在这里插入图片描述

  • 发信者蓝图中的节点(接受者一顿计算后的返回值从Output1出来)(略微有一点难以理解,建议实践)
    在这里插入图片描述

  • 此时,接收者蓝图中的事件不能用了?
    在这里插入图片描述
    这个不同于添加输入引脚。直接添加输出,发信者蓝图会增加输出引脚,但是接收者蓝图中的接口事件会出错,因为事件没有输出引脚只有来自别的事件的输入引脚。

  • 此时删除这个事件,重新右键调出,只不过这时候没有事件只有函数了
    在这里插入图片描述
    双击打开后在函数内部进行具体实现的编写,不用连接执行流

  • 此时的执行流程是啥样?

  • 发信者中做如下操作
    在这里插入图片描述

  • 接收者中的函数体内部,仅仅是对两个输入做个加法后返回
    这是接收者中的函数,双击打开后有具体实现,函数摆在蓝图里面就行了 不用连接流程引脚,发出者会调用目标蓝图内的函数,这个函数把结果返回给发出者的节点的输出引脚,然后具体要再执行什么操作,需要在发出者后面来实现。
    在这里插入图片描述

  • 没输出引脚:发出者调用接口,接口调用接收者中的“事件”

  • 有输出引脚:发出者调用接口,接口调用接收者中的“函数”,发出者得到其返回值后执行后面逻辑。

  • 总结:
    事件——在接口蓝图中,未添加输出引脚,注意输入引脚并不影响
    函数——在接口蓝图中,添加了输出引脚,注意输入引脚并不影响

  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宗浩多捞

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值