查找 Actor

在虚幻引擎 4 的场景中查找 Actor 的操作指南。

Windows
MacOS
Linux
本页面的内容

开始构建游戏及其关卡时,你可能会发现在场景中定位单个 Actor 十分困难。从关卡背景或几何体、NPC 或敌人到交互对象或道具,你的场景中包含数百个 Actor 并不罕见,而要从中定位某个 Actor 就好比"大海捞针"。

但是,你可以使用 World Outliner 以帮助缩小场景中某个 Actor 的搜索范围(如下图所示)。

Actors1.png

在上图中,World Outliner(右)显示放置在你关卡中的所有 Actor。单击 World Outliner 中的某个 Actor 还可在关卡视口中突出显示该 Actor。你可以通过单击 ActorType 标题,按照 Actor 名称或 Actor 类型对 World Outliner 排序(你可以通过单击类型(Type)框中的下箭头,将次要类别从"类型"更改为其他筛选器)。

World Outliner 中选定某个 Actor 后,在关卡视口中导航时,按下 F 键会将相机移到选定 Actor 的位置以 Focus 该 Actor。

请参阅 World Outliner 文档,了解有关在场景中定位 Actor 的详细信息。

虽然借助 World Outliner 可在编辑器中查找 Actor,那么你如何通过蓝图查找 Actor 以便采用某种方式修改 Actor?本"操作指南"系列将向你介绍一些方法,你可以使用这些方法依据各种标准在场景中搜索 Actor,同时还可根据需要进行访问或修改。

实现指南

本页面的内容

本页介绍了有关如何使用 Get All Actors of Class 节点在关卡中查找 Actor 的示例。调用此节点将检索关卡中指定类的所有 Actor,并将其放置在数组(变量集合)中,你可根据所需的筛选标准从该数组中抽取所有 Actor 或单个 Actor。然后,你可以访问 Actor 的属性或基于当前 Actor 的类型以及你要实现的目标采用某种方式对其进行修改。

Get All Actors of Class 节点

在此示例中,我们使用的是 带有起始资源的第三人称模板创建的项目中的蓝图

  1. Game/Blueprints 下的 Content Browser 中,拖入三个 Blueprint_Effect_Fire 资源。

    Actors1.png

    可随意放置,只是放置后将这些资源方便找到。

  2. Game/Blueprints 文件夹下的 Content Browser 中,打开 MyCharacter 资源。

  3. Blueprint Editor Window 的图表中,右键 并添加 F 按键事件。

    Actors2.png

    按下 F 时,我们将尝试定位场景中的 Actor。

  4. F 按键事件的 Pressed 针连出来,添加 Get All Actors Of Class 节点。

    Actors3.png

    顾名思义,此操作将尝试获取指定类的所有 Actor。

  5. Get All Actors of Class 节点中,单击 Actor Class 下拉菜单,然后添加 Blueprint_Effect_Fire 类。

    Actors4.png

  6. 拖开 Out Actors 并添加 ForEachLoop 节点。

    Actors5.png

    Out Actors 是所有 Actor(指定类的 Actor)的 数组,我们可对其中"每个"Actor 执行操作。

  7. 拖开 ForEachLoop 节点的 Array Element,然后获取 P_FireFire Audio

  8. 在图表中 右键 并添加一个 Deactivate 节点,然后将火和音频针连接到 Target

    点击查看大图。

    在此,当玩家按下 F 时,我们将获取关卡中喷火效果的所有实例并将其停用。

  9. 单击 编译 按钮,关闭蓝图,然后单击 运行 在编辑器中开始游戏。

你可以通过按下 F 键停用放置在你关卡中的所有喷火实例。

使用此方法,我们可以查找特定类的所有 Actor 并以某种方式对其产生影响,但是,如果你想查找特定类的所有 Actor,然后在该类中查找某组或特定 Actor(而非该类的所有 Actor)并进行修改,则应如何操作?下一节将向你介绍一些方法,你可以使用这些方法对结果数组过滤,并只获取所需的 Actor,而非所有 Actor。

Get Specific Actors 节点

在上一节中,我们了解到使用 Get All Actors of Class 节点可生成指定类的 Actor 数组。本节将介绍如何根据不同标准筛选阵列结果,以从阵列中获取特定 Actor 或单个 Actor。

方法之一是在 Actor 上使用 Tags,例如:

  1. 从上一节中的示例继续,在你的关卡中选择一种喷火效果。

  2. Details 面板中,找到 Tags 部分并单击加号以向 Actor 添加标签。

    Actors8.png

  3. 0 字段中,为此标签输入一些文本,例如 Target

    Actors9.png

  4. MyCharacter 蓝图中,拖开 ForEachLoopArray Element,然后添加 Get Tags 节点。

    Actors10.png

  5. Tags 针连出来,添加 Get 节点。

    Actors11.png

    此时,我们将"获得"标签,且索引为 0(上述步骤中将其设置为 Target)。

  6. 在图表中 右键 并添加 Branch 节点。

  7. 拖开 Branch 下的 Condition 并添加 Actor Has Tag 节点。

  8. Get 节点的外针连接到 Actor Has Tag 节点上的 Tag 针。

  9. ForEachLoop 针的 Array Element 连接到 Actor Has Tag 节点上的 Target 针。

    Actors12.png

  10. 拖开 ForEachLoop 针的 Array Element,以获取 P_FireFire Audio 并将其连接到 Deactivate 节点。

    点击查看大图。

    请注意,收集指定类的所有 Actor 并将其放置在阵列中后,我们应查看每个 Actor 以检查其是否具有指定标签,只有当 Actor 具有指定标签时,我们才可停用它。

以下是筛选结果的另一个示例:

点击查看大图。

在以上示例中,我们获取了 Emitter 类的所有 Actor,而非特定的蓝图类,这可在你关卡中具有一些喷射器(如烟、火、风、雨和雾等)且你想全部关闭它们时使用。我们将 CastingEmitter 对象,然后检查该喷射器是否激活,若是,则停用它。

你不必始终 CastForEachLoop 下的对象,请参阅以下示例:

点击查看大图。

此时,我们将获取关卡中 TriggerBox 类的所有 Actor 并禁用在其上发生碰撞(关闭关卡中的所有触发器)。我们不必 Cast To TriggerBox,因为我们要访问的是 TriggerBox Actor 本身而非 TriggerBox 的组件。当你想要访问构成 Actor 的组件时,则需使用 Cast To 节点。

Select Skin
Light
Dark

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

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

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

发表反馈意见