UEC++第31天|蓝图通信、蓝图接口、事件分发器

面向对象之蓝图通信

参考资料:b站甜筒老师

  1. 蓝图通信的三种方式

    • 直接通信:一对一的通信方式,具体对象发送具体指令。
    • 蓝图接口:类似于群聊,可以一对多通信,但每个对象对同一指令的反应可能不同。
    • 事件分发器:一种反向监听机制,类似于发布-订阅模式,一个对象发出事件,所有监听该事件的对象都会收到通知。

  2. 获得引用的方法

    • 指派:直接指定特定对象。
    • 碰撞:通过物理碰撞检测来获得对象引用。
    • 创建:通过创建对象的节点获得新创建对象的引用。
    • Get(打听):通过对象的社会身份(如玩家角色、父对象、子对象等)来获取引用。
    • 人口普查法(Get All):通过搜索所有符合条件的对象来获取引用,类似于在大量数据中筛选。

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  3. 蓝图接口和事件分发器的区别

    • 蓝图接口更像是一个中心化的广播机制,一个对象发送消息,所有连接到该接口的对象都会收到消息。
    • 事件分发器则是一种去中心化的监听机制,对象不需要知道是谁发送了事件,只要监听相应的事件即可。

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

1.怎么理解蓝图通信

  1. 直接通信
    • 就像你直接跟你的朋友说“把你的玩具给我玩一下”。这是你和你朋友之间的直接对话,只有你们两个人知道。
  2. 蓝图接口
    • 想象一下你在公园里大声说“谁想来玩捉迷藏?”公园里的很多小朋友都听到了,他们可以选择加入你的游戏。每个听到的人都可以有不同的反应,有的会跑过来,有的可能只是看看你。
  3. 事件分发器
    • 这就像你在家里看电视,你最喜欢的卡通节目开始了,电视会告诉你“卡通时间到了!”你听到这个消息后,就会去看电视。电视不知道你是谁,但它会告诉所有在听的人。

2.接口实现蓝图通信

主要解决的问题是如何在游戏开发中使用蓝图接口(Blueprint Interface)来实现同一指令多种实现的交互逻辑。文章通过具体的例子和步骤,解释了蓝图接口的概念、用途、如何创建和使用,以及它在游戏开发中的优势。

2.1. 蓝图接口概念

  • 函数集合体
  • 只有名称,没有实现
  • 允许不同对象对同一指令做出不同反应

2.2.蓝图接口用途

  • 实现多个对象对同一指令的不同响应
    • 玩家与门、道具、NPC的互动
    • 不同对象对子弹伤害的不同反应

2.3 创建和使用蓝图接口

  • 创建
    • 在内容浏览器中创建
    • 独立存在,不依附于任何类
  • 连接
    • Actor需连接到接口并编译
  • 实现
    • 收信方内部实现接口函数
  • 通信
    • 发信方获得收信方引用
    • 调用接口上的函数

2.4. 一对一通信

  • 多个actor连接同一接口
  • 实际通信仍是一对一
  • 修复对话气泡bug
  • 优化玩家角色碰撞逻辑

2.5 蓝图接口优势

  • 简化调用过程
  • 避免复杂类型确认
  • 代码更简洁、易于维护

2.6.接口与直接通信区别

  • 接口方便调用
  • 直接通信需确认对象类型后调用私有函数

3.事件分发器

3.1 事件分发器概念

  • 由收信方反向监听发行方的机制
  • 类比:社交平台(微博、B站)粉丝关注

3.2 事件分发器与蓝图接口的区别

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3.3 使用场景

  • 通信行为
    • 一对一 vs 一呼百应
  • 引用方便性
    • 发信方获得收信方引用方便性
    • 收信方获得发信方引用方便性

3.4 实践操作

  • 注册事件分发器
    • 发信者创建事件分发器
  • 绑定与监听
    • 收信者获得发信者引用并绑定分发器
  • 发信
    • 发信者调用事件分发器实现一对多通信
  • 解绑
    • 收信者根据需求解绑分发器

3.5 总结

  • 根据通信需求选择合适机制
  • 考虑通信行为、引用方便性和关卡蓝图通信
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值