一篇文章了解UE蓝图通信方式
快速了解UE蓝图通信 UE当中从一个蓝图获取其他蓝图的信息十分重要,有些同学不太了解如何较好的连接其他蓝图,那么今天老蒋就通过这篇文章将蓝图通信方式给大家聊一聊
1. 直接通信
最简单粗暴的通信方式,直接get获取通信对方,获取他的信息 比如我们在关卡蓝图就可以直接创建一一个关卡中某个actor的引用,和该actor蓝图进行联系
通过get actor获取首个对象或多个对象数组,开销较大
什么时候用?
必须要引用某个独立的actor并联系的,比如
关卡蓝图中调用摄像机切换镜头,获取某个npc坐标
2. 通过蓝图转换cast
cast是我们很常用的通信方式,比如一个NPC,我们需要让他能访问玩家角色蓝图的一些数据,就需要在NPC的蓝图里通过CAST来获取和玩家的联系,就相当于你得知道对方的电话号码才能和对方拨通,号码错了,那就没法联系啦
cast 的时候要特别注意的是object必须要正确,比如玩家蓝图的object需要get 玩家 pawn 或 character 但是玩家好办,如果要获取某个npc或物品actor就不好获取了 可以通过get actor 获取
类的Actor来实现(方法1)
,但是这种方式本身开销较大,不适合经常使用,除非你必须要获取某个没有直接交互的对象 所以我们可以通过其他方式,比如通过trace检测的方法 返回命中结果里面的hit actor来获取我们需要的actor对象进而cast进行通信,因为游戏当中一般来说我们需要通信联系的对象都是要和我们直接互动的对象,所以使用类似这种检测的方法可以更加精准有效的获取对象
什么时候用?
需要获取玩家角色蓝图的时候 需要访问
多个拥有相同父级蓝图
的子蓝图的时候,比如敌人NPC 获取某个特殊蓝图或组件的时候,比如控件蓝图,动画蓝图 注意的是cast开销较大,不建议经常调用,所以可以在蓝图的事件开始运行时就cast转换并生成变量,后续访问直接使用该变量
3. 接口通信
接口就像你和需要联系的对象之间建立了一个
接线员
,需要联系的时候直接找接线员,不管对方是什么类型的对象我们都可以访问 比如你用剑砍了一个人,或者砍了一棵树,或者砍了一块石头,这些对象不是同一个类型,但是他们都可以使用相同的接口进行获取,而不需要一一转换 当然,如果你砍的对象有同一个父类,那么Cast父类进行通信是同样的效果 使用接口,则需要actor在
类设置
里,添加需要的接口
接口可以建立多个函数,可以有输入,也有输出,没有输入输出他就可以当做一个事件进行调用
带这种小齿轮的就是事件接口调用
有输出输入了,他就成了函数
我们要访问接口也很简单,在获取对象的情况下,输入接口的函数/事件名称 使用带消息后缀的
接口的调用右上角会有一个信件的小图标,代表他就是接线员,只要对象成功添加了接口,我们就可以通过这个接线员来访问他对应的函数内容
什么时候用?
访问多个不同类型蓝图通过同一个事件或函数执行不同结果的时候 比如不同物体都可以被玩家摧毁,但是有的破碎,有的直接消失,有的执行粒子效果,通过同一个接口触发
4. 事件分配/分发器(
分发器具体使用案例后面会出文章专门说一下
)
使用事件分发器,可以绑定
多个事件
进行调用 我们可以建立事件分发器 拖入到场景中,对他进行绑定(事件),调用,解除绑定等操作 通过其他蓝图调用该分发器,进而激活绑定的事件 事件分发器就像是一个广播员,把消息发放出去,所有接收这个消息的都会执行相应的结果
什么时候用?
多个场景
监听相同
一个事件,集体触发的时候 比如玩家打死一个boss,下个场景通道传送门开启 当前场景中的所有敌人都不再攻击玩家 玩家摆出胜利姿势 播放音效,特效等 这些条件都在boss死亡时候触发
具体使用根据使用场景灵活应用,并不是死的规定,接口和分发器执行效率更高,速度更快 本文章由老蒋整理编写,如需转载请注明出处