UE4蓝图通信-蓝图接口

news/2024/11/8 2:36:18/

蓝图接口

除了最常用的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出来)(略微有一点难以理解,建议实践)
    在这里插入图片描述

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

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

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

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

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

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

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

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


http://www.ppmy.cn/news/461949.html

相关文章

UE4动画蓝图学习

1.AI 2.Anim Node 1.Scale Chain Length Default Chain Length – 默认链长度,值越大关节越短,值为1只改TargetLocation。但设置后出现了奇怪问题。 3.Animation 1.Random Sequence Player 随机序列播放,随机播放列表内的动画序列 4.A…

UE4入门之路(基础蓝图篇):蓝图的制作

蓝图系统简介 蓝图系统是UE4中十分有代表性的一个特点,所谓蓝图就是一种可视化的脚本。该系统非常灵活且非常强大,因为它为设计人员提供了一般仅供程序员使用的所有概念及工具。 程序员能够很方便的创建一个基础系统,并交给策划进一步在蓝图…

C++技能系列 ( 2 ) - const的几种使用【详解】

系列文章目录 C高性能优化编程系列 深入理解软件架构设计系列 高级C并发线程编程 C技能系列 期待你的关注哦!!! 生活就是上帝发给你的一张手牌,无论多烂,你都得拿着。 Life is god give you a hand, no matter ho…

ASP.NET交通信息网上查询系统的设计与实现(源代码+论文+开题报告)

当前我国交通网上信息系统的发展处于一个较落后的水平,广大乘客可以获得信息的方式很少,通常依赖于火车飞机时刻表,而汽车只能到车站查询。为了解决这种问题,加快发展交通信息化,设计一个交通信息网上查询系统是具有一定实际应用意义的。在此背景下,本文基于ASP.NET设计开发…

Doris初认识

Doris初认识 文章目录 Doris初认识1. Doris 概述2. 核心特性3. 使用场景4. 架构 1. Doris 概述 Apache Doris 是由百度大数据部研发(之前叫百度 Palo,2018 年贡献到 Apache 社区后,更名为 Doris ),在百度内部&#xff…

ac2100刷openwrt 2.4g wifi只有130m速率

刷openwrt后2.4gwifi 一直130m有时候刷短视频还会卡一下 一直以为是固件问题,换了几个固件都不行,都是130m,以为是硬件差劲,想着现在wifi都宣传的300m无线,不太可能是性能差. 于是改了以下配置 2.4gwifi信道速率改成了40Mhz,原本是20/40的,本来以为他能自动切换,可惜不能,直接…

不刷机,京东云路由进openwrt后台

发现一个不刷机,京东云路由进openwrt后台方法(本人鲁班有效) 网址:http://192.168.68.1/cgi-bin/luci/​​​​​ 账号:root 密码为你路由器的管理密码 里面应该可以直接刷固件和安装软件,英文和openw…

IP路由汇总

IP路由汇总 IP地址汇总vlan路由器 IP地址汇总 将多个子网合成一个总网 路由器的接口需要配ip地址 交换机的接口不需要配ip地址,给交换机配置ip地址是给vlan1配置ip的,默认所有的接口是vlan1 vlan 一个VLAN一个网段 子网划分---->大网划分成很多个…