使用宏库

宏库 是一个容器,存放大量宏或自含式图表(可作为节点放置到其他蓝图中)。它们保存常用节点顺序(包括执行和数据传输的输入和输出),因此可有效节约时间。

创建宏库

此例中我们创建由两个宏组成的宏库,一个用于添加“体力值”变量,两一个用于调整指定 Actor 的大小。

此例中我们使用的是启用 新手内容Blueprint Third Person 项目

  1. 内容浏览器 的空白处 单击右键,然后在 Blueprints 的快捷菜单中选择 Blueprint Macro Library

    CreateLib1.png

  2. 在出现的 Pick Parent Class 窗口中选择 父类 (此例中选择 Actor)。

    CreateLib2.png

  3. 为宏库命名,然后 双击 打开。

    CreateLib3.png

    将显示 蓝图宏 界面。

    CreateLib4.png

  4. 在右上角的 MyBlueprint 窗口中,将默认宏上按下 F2 将其重命名为 ScaleUp

  5. ScaleUp 宏的 Details 面板中按下图添加 InputsOutputs

    CreateLib5.png

    上图中创建了两个输入:一个名为 In,设为 Exec 类型;另一个名为 InActor,设为 Actor 类型。添加的输出名为 Out,设为 Exec 类型。我们将使用它们来决定需要通过此宏进行影响的 Actor。

  6. ScaleUp 宏的图表中,按下图重建节点网络。

    CreateLib6.png

    在上图中,此宏被调用时,它将获取 Actor 作为 InActor 提供的内容;并获取其当前大小,在将其设为 目标(即为指定为 InActor 的 Actor)的新大小 3D 之前乘以 1.25。我们现在即可结合任意 Actor 使用此宏,并使用此宏调整 Actor 的大小。

  7. MyBlueprint 窗口添加另一个名为 AddHealth 的宏。

  8. AddHealth 宏的 Details 面板中按下图添加 InputsOutputs

    CreateLib7.png

    上图中我们使用一个名为 GetHealth 的浮点值,通过 SetHealth 输出节点进行传递之前将把此值添加到该节点。

  9. AddHealth 宏的图表中,按下图重建节点网络。

    CreateLib8.png

    上图中,在输出结果值到 SetHealth 之前,为作为 GetHealth 值的浮点值增加 50

  10. 保存 并关闭蓝图宏库。

  11. Content/ThirdPersonBP/Blueprints 文件夹中,打开 ThirdPersonCharacter 蓝图。

  12. MyBlueprint 窗口中添加一个代表 Health浮点 变量(将默认值设为 0)。

    CreateLib9.png

  13. 在事件图表中,按下图重建节点网络。

    CreateLib10.png

    上图中,按下 Q 键后将调用 AddHealth 宏,它将抓取 Health 变量(执行增加的宏脚本)并通过输出引脚 SetHealth 进行更新,然后再显示到屏幕上。我们先使用 E 按键事件检查 Health 是否大于 100,然后允许 ScaleUp 宏在 Actor Self(即为 ThirdPersonCharacter.)上调用。

  14. 编译 并点击 Play 在编辑器中开始游戏。

    全屏观看视频可更清楚地查看屏幕中显示的文本。

    以上视频包含了步骤 13 中的蓝图脚本,因此脚本发射时可以看到。按下 E 键尝试调用 ScaleUp 宏时,首先检查默认设为 0 的 Health 值。之后按下 Q 调用 AddHealth 宏,在每次按键时为 Health 变量增加 50。数次按键后,再次尝试调用 ScaleUp 宏便会成功,因为增加后 Health 已经大于 100。

    这些宏可从提供 Health 输入的其他蓝图和提供的目标 Actor 进行调用。