3 - 蓝图通信

光速过一遍蓝图编程,本文将光速过一遍有关蓝图通信的如下内容:

  • 直接蓝图通信;
  • 关卡蓝图通信;
  • 事件分发器;

直接蓝图通信

直接蓝图通信是蓝图和Actor间通信的一种简单方式。它通过创建一个存储另一个Actor/蓝图类的对象引用变量,并将其作为目标输入参数让动作修改它。

例如创建一个名字为BP_LightSwitch的蓝图,它有一个点光源类型的对象引用变量,该变量引用放置在关卡中的点光源。当玩家和该蓝图类实例重叠时,点光源的可见性将被切换。

事件图表如下:

然后需要在编辑器中放置一个点光源实例,并修改它的移动性(Mobility)为可移动的(Moveable)。再在该蓝图类实例中绑定点光源即可。

Cast To XXX节点

当我们需要访问被引用实例的子类时,需要对引用进行强制转换,这会用到Cast To XXX节点,该节点主要有两种用途:

  1. 测试实例是否属于特定类型:例如给定一个Actor引用,看它是不是Character类。
  2. 访问子类的变量和函数:假设有一个继承自GameModeBase类的蓝图类BP_GameModeWithScore,现在有一个GameModeBase类的对象引用,可以尝试用该节点将其转换为BP_GameModeWithScore类对象引用。如果该实例引用确实是BP_GameModeWithScore,那么该节点将会成功返回类型为BP_GameModeWithScore类的对象引用。

上面两个例子的示例如下:

上图中出现的两个白色连接引脚被称为重新路由节点(reroute nodes),用于组织蓝图,可以在拉线的时候双击,或者在事件图表空白处右击添加。

关卡蓝图通信

关卡蓝图是UE中一种特殊类型的蓝图,游戏的每个关卡都有一个默认的关卡蓝图,它们对于创建仅在当前关卡发生的事件和操作中非常有用。

要想访问关卡蓝图,需要在关卡编辑器中展开蓝图工具栏,然后进入关卡蓝图:

接下来通过一个小例子展示关卡蓝图的使用方法,在关卡中放置一个触发框,玩家和它重叠时播放特效:

  1. 在关卡中放置一个触发框,然后选中它的状态下进入关卡蓝图,添加重叠开始时的事件:

  2. 修改Starter Content中的电火花特效蓝图,将它粒子效果组件的自动启动取消了,编译蓝图后将其放置在关卡中;

  3. 在选中该特效实例的情况下,在关卡蓝图中创建它的对象引用:

  4. 在关卡蓝图中编写相关逻辑:

结果如下:

使用事件分发器

事件分发器(Event Dispatcher)允许蓝图在事件发生时通知其他蓝图。关卡蓝图和其他蓝图类可以监听这个事件,当事件被触发时,它们可能有不同的行为。

关卡蓝图和蓝图类的通信

接下来看看关卡蓝图如何监听事件分发器。例如,创建了一个BP_Platform蓝图,当角色与它的实例重叠时,它会调用名字为PlatformPressed的事件分发器,关卡蓝图正在监听PlatformPressed事件,然后生成爆炸特效。

首先需要在BP_Platform中创建事件分发器,可以在“我的蓝图”中创建它:

这个事件分发器需要一个BP_Platform对象引用作为输入,因此需要在它的细节面板处添加输入:

接下来就需要在玩家和BP_Platform实例重叠时发送这个事件了,在BP_Platform中添加如下蓝图:

最后在关卡中放置BP_Platform实例,并在关卡蓝图中编辑它对Call Platform Pressed事件的反馈即可:

这样就通过事件分发器实现关卡蓝图和BP_Platform蓝图类的通信:

蓝图类间的通信

蓝图中 绑定事件(Bind Event)节点可以将一个事件绑定到另一个事件或事件分发器中,其中事件分发器可以在另一个蓝图类中。当一个事件被调用时,绑定到它的所有其他事件也会被调用。

接下来就来看一下如何通过绑定事件实现蓝图类间的通信,我们将要新建一个电火花特效蓝图子类,在它的BeginPlay事件中绑定BP_Platform的事件:

  1. 创建蓝图子类,新建BP_Platform对象引用变量:

  2. 编写蓝图子类的BeginPlay事件逻辑:

    这里先检查实例中BP_Platform变量是否设置合法,然后绑定它的事件分发器。一旦BP_Platform引用的Platform Pressed事件被触发,就会触发这里定义的自定义事件Show Sparks,显示电火花特效。

  3. 在关卡中放置电火花特效蓝图子类,并设置BP_Platform对象引用。之后结果如下:

参考资料

  • 中文翻译:《UE5蓝图可视化脚本游戏开发完全学习教程》
  • 英文原版:《Blueprints Visual Scripting for Unreal Engine 5 Third Edition》