蓝图通信用法

蓝图通信不同用法的总览。

Windows
MacOS
Linux

使用蓝图时,如需在蓝图之间传递或共享信息,需要使用一种形式的 蓝图通信。可根据需求使用数种不同类型的通信。此页面讲述最常用的方法并提供帮助链接和使用情况范例。

直接蓝图通信

2_9.png

直接蓝图通信(Direct Blueprint Communication) 是最常见的蓝图通信方法,而且当您有两个蓝图并且想要它们在某个时刻彼此交流时,它可以提供良好的效果。这种交流总是一对一的;这意味着一个蓝图(“工作蓝图(Working Blueprint)”)请求访问另一个蓝图(“目标蓝图(Target Blueprint)”)。直接蓝图通信(Direct Blueprint Communication)最简单的使用方法是通过公开的对象变量(Variable)获得对目标蓝图的参考,然后指定要访问该蓝图的哪个实例。

请查看 直接蓝图通信 以了解详情。

何时使用

以下范例讲述何时使用 直接蓝图通信

  • 关卡中存在两个 Actors,需要进行相互之间的通信。

    • 与关卡中的一个开关进行互动后打开特定的门或开启特定的灯(每个均为单独的蓝图)。

设置直接蓝图交流 中可查阅设置流程。

事件分配器

OpenDoorEventDispatch.png

事件分配器 适用于告知其他“正在倾听的”蓝图已发生事件。事件发生时,正在倾听的蓝图便会作出反应,并相互独立地执行预期的操作。

例如,游戏中有一个 Boss,它被消灭时将会调用“OnDied”事件分配器。可将“OnDied”事件 绑定 在任意数量的其他蓝图中,如角色(作出庆祝动作)、关卡中的门(会打开)或 HUD(显示 UI 信息)。所有这些蓝图均在收到 Boss 被消灭的“OnDied”通知后执行。

可在 事件调度器 中查阅详细内容。

何时使用

事件分配器 使用时机的例子:

  • 需要从角色蓝图到关卡蓝图进行通信。

    • 玩家角色升级,需要开放之前锁定的区域。

    • 玩家角色按下行动按钮,对关卡执行某种操作。

  • 生成的 Actor 执行某种操作时触发事件。

    • 生成一个 Boss,Boss 被消灭时触发事件,在世界场景中生成一个奖励。

    • 在关卡中生成一个道具(武器、回复剂等)并在道具被拾起时告知道具和角色。

设置事件分配器 中可查阅设置流程。

蓝图接口

InterfaceNodes.png

通过 蓝图接口(简称 接口)可实现与多种类型对象(均共享特定功能)形成互动的一般方法。例如汽车和树是完全不同的两种对象,但拥有一个共同点 - 它们均可被武器开火击中并遭到破坏。

创建一个包含 OnTakeWeaponFire 函数的蓝图接口,让汽车和树应用此蓝图接口后即可将二者视为相同的对象;在任意一个对象被击中时调用 OnTakeWeaponFire 函数,并使它们出现不同反应。

理解蓝图接口的最佳方式是将其视为一种合约。合约的内容为:“如应用此接口,则须承诺应用这些特定的函数,并在调用时形成反应。” 多个蓝图可应用一个接口,但并非所有蓝图均会形成反应(部分蓝图将无视调用)。回到之前武器开火的例子中,墙壁不需要对破坏作出反应,因此它们不会应用带 OnTakeWeaponFire 函数的接口,并无视调用。

可在 实施蓝图接口 中查阅详细内容。

何时使用

在以下情况实例中,蓝图接口 非常适合于通信:

  • 数个蓝图中存在一些相似功能,但在调用后执行不同的效果。

    • 玩家拥有一个火焰喷射器,使用时将触发一个名为 ElementalDamage 的事件。树木蓝图接受 ElementalDamage 调用并将树木烧毁,而雪人蓝图将把雪人融化。

    • 玩家拥有一个“use”按钮,按下按钮可执行开门、关灯、拾起道具等操作。

    • 敌人拥有特殊能力,可基于玩家的体力值完成变化,执行不同操作。

设置蓝图接口 中可查阅设置流程。

蓝图投射

Event6.png

蓝图通信的另一种常见形式是使用 Cast 节点。使用 Cast 节点时,便是在询问对象“你是否为该对象的特殊版本”。如果是,则进行访问;如否,则忽略请求。

例如,您创建了一个名为“Flying Character 蓝图”的特殊角色蓝图,此蓝图可使玩家角色在游戏中飞行。您可使用 Get Player Character 节点访问玩家角色的移动组件并在通过常规方法对玩家产生影响,如设置其位置、旋转等。您无法获得飞行能力,因为 Character 蓝图并不了解飞行。只有“Flying Character 蓝图”了解飞行。在此例中,您需要获取玩家角色和 Cast To Flying 蓝图,之后才可访问 flying 函数。

如玩家角色未使用 Flying Character 蓝图而完全使用不同类型的 Character 蓝图,则执行 Cast To Flying 蓝图时会失败,因为并未使用 Flying 蓝图,所以无法访问并执行飞行命令。

可在 投射 中查阅详细内容。

何时使用

以下是 蓝图投射 使用时机的几个例子:

  • 需要访问另一个蓝图的特殊版本。

    • 角色走进火焰中,导致体力值耗尽。

      • 投射到特殊的角色蓝图,以便访问并变更体力值。

    • 角色死亡,需要重新生成。

      • 投射到特殊的游戏模式蓝图,执行重新生成脚本。

  • 需要访问相同类的多个蓝图,并以相同方法进行修改。

    • 场景中拥有数盏灯,事件发生时需将它们开启或关闭。

      • 投射到灯蓝图并执行函数将灯关闭。

  • 需要访问一个特殊的子蓝图。

    • 存在基于一个动物蓝图(猫、狗、鸟)的数个蓝图,需要访问其中一个动物。

      • 投射到猫、狗和鸟,访问其相应的蓝图和特有功能。

设置蓝图投射 中可查阅设置流程。

标签
Select Skin
Light
Dark

欢迎来到全新虚幻引擎4文档站!

我们正在努力开发新功能,包括反馈系统,以便您能对我们的工作作出评价。但它目前还未正式上线。如果您对此页面有任何意见与在使用中遭遇任何问题,请前往文档反馈论坛告知我们。

新系统上线运行后,我们会及时通知您的。

发表反馈意见