查找 Actor

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

Choose your operating system:

Windows

macOS

Linux

本页面的内容

设计游戏及其关卡时,你可能会发现在场景中定位某个 Actor 十分麻烦。无论是关卡布景、几何体、NPC、敌人、交互对象,还是场景道具,场景中可能包含数百个 Actor 。从中找到某个 Actor 就好比"大海捞针"。

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

Actors1.png

在上图中,世界大纲视图(右)展示了所有放置在关卡中的Actor。点击世界大纲视图中的一个Actor后,该Actor会在关卡视图中高亮显示。你可以点击 Actor类型(Type),将Actor按照名称或类型进行排序(你可以点击类型框中的向下箭头,将二级类别从类型改为其他过滤条件)。

在世界大纲视图中选中某个Actor,然后点击关卡视图,双击该Actor或直接按下 F,可直接将窗口 对准 该Actor。

请参阅 世界大纲视图 文档,了解有关在场景中定位 Actor 的详细信息。

尽管你可以借助 世界大纲视图(World Outliner) 在编辑器中查找某个 Actor,但如何通过蓝图来查找 Actor 以便修改它呢?本"操作指南"将介绍如何设置各种标准,以便在场景中搜索 Actor。

实现指南

项目设置

在本教程中,你将使用 Get All Actors of Class 节点在关卡中找到Actor。此节点受到调用时,它将检索关卡指定类(Class)中的所有Actor,并将它们放置在 数组(Array) 中。然后,你可以根据筛选条件从该数组中检索Actor。然后,你可以访问Actor的属性,或者根据你要实现的功能以某种方式修改它们。

  1. 首先,点击 新建(New) > 游戏(Games) > 第三人称(ThirdPerson) > 蓝图项目带初学者内容包(Blueprint Project With Starter Content),创建名为 FindingActors 的项目。

image alt text

  1. 找到 编辑(Edit) > 项目设置(Project Settings) >引擎(Engine) > 输入(Input) >绑定(Bindings) > 操作映射(Action Mappings) ,然后点击 添加(Add)+),创建名为 FindActorPressed 的新操作映射,然后将 关键值 设置为 1

image alt text

创建蓝图FireEffect Actor

初学者内容包(Starter Content) 文件夹提供了完整的FireEffect Actor,其中包括表示火焰效果的 粒子组件(Particle Component) 和用于声音效果的 音频组件(Audio Component) 。此Actor将用作从Get All Actors of Class节点查找的Actor基类。

  1. 找到 内容(Content) > StarterContent > 蓝图(Blueprints) ,然后将 Blueprint_Effect_Fire 实例拖到世界中。

image alt text

第三人称角色:设置FindingActor按下事件

  1. 找到 内容(Content) > ThirdPersonBp > 蓝图(Blueprints) 文件夹,并双击 ThirdPersonCharacter 打开其 类默认值(Class Defaults)

image alt text

  1. 右键点击 事件图表(Event Graph),然后在 操作(Actions) 菜单中搜索 FindActorPressed 操作键事件。

image alt text

  1. FindActorPressed 节点键事件,从 Pressed 引脚拖出,然后从 操作(Actions)菜单 搜索 Get All Actors Of Class 节点。

image alt text

  1. Get All Actors of Class 节点内,点击 Actor类(Actor Class),然后在下拉列表中选择 Blueprint_Effect_Fire 类。

image alt text

  1. Out Actors 引脚拖出,然后在 操作(Actions) 菜单中搜索 ForEachLoop

image alt text

  1. Get All Actors Of Class 节点的 执行(Execution) 引脚拖出,并将其插入 For Each Loop 节点的 执行(Exec) 引脚。

image alt text

  1. ForEachLoop 节点拖出 数组元素(Array Element) 引脚,然后在 操作(Actions) 菜单中搜索 Get P_Fire

image alt text

  1. 数组元素(Array Element) 引脚拖出,并在 操作(Actions) 菜单中搜索 Get Fire Audio

image alt text

  1. P Fire 引脚拖出,然后在 操作(Actions) 菜单中搜索 Deactivate 节点。

image alt text

  1. 火焰音频(Fire Audio) 引脚拖出,并将其连接到 Deactivate 节点的 目标(Target) 引脚。

image alt text

  1. 点击 编译(Compile)保存(Save)

image alt text

完成的蓝图

image alt text

最终结果

  1. 找到 工具栏(Toolbar) ,并点击 运行(Play)PIE)。

image alt text

当按下数字1键时,你应该注意到,火焰效果粒子将熄灭,并且不再听到从音频组件发出的音效。

image alt text

获取带标签的特定Actor

你使用了Get All Actors of Class节点来获取指定类的Actor数组。但是,你也可以在Actor上使用 标签(Tags) ,根据不同的条件筛选数组结果,以便从数组中获取特定的Actor或单个Actor。示例,

  1. 找到 内容(Content)> StarterContent > 蓝图(Blueprints) ,并选择 Blueprint_Effect_Fire

image alt text

  1. 细节(Details) 面板中,找到 标签(Tags) 分段,然后点击 添加(Add)+)将标签添加到Actor。

image alt text

  1. 0 元素字段中,在文本字符串中输入"FindActorTag"。

image alt text

  1. MyCharacter 蓝图中,从 ForEachLoop数组元素(Array Element) 引脚拖出,然后在 操作(Actions) 菜单中搜索 Get Tags

image alt text

  1. 标签(Tags) 引脚拖出,然后在 操作(Actions) 菜单中搜索 Get 节点。

image alt text

此处,我们正在"获取"索引0处的标签,我们已在上文中将其设置为 FindActorTag

  1. 在图表中 右键点击,并在 操作(Actions) 菜单中搜索 Branch 节点。

image alt text

  1. Branch 节点的 条件(Condition) 引脚拖出,然后添加 Actor Has Tag 节点。

image alt text

  1. Get 节点的 输出(out) 引脚连接到 Actor Has Tag 节点上的 标签(Tag) 引脚。

image alt text

  1. ForEachLoop 节点的 数组元素(Array Element) 引脚连接到 Actor Has Tag 节点上的 目标(Target) 引脚。

image alt text

  1. ForEachLoop 引脚的 数组元素(Array Element) 拖出两次,获得 P_FireFire Audio 节点,并将它们连接到 Deactivate 节点。

image alt text

  1. 点击 编译(Compile)保存(Save)

image alt text

  1. 关卡视口(Level Viewport) 中选择你的 Blueprint_FireEffect 之一,然后在 细节(Details)面板 中,找到 标签(Tags) 变量,找到 FindActorTag 字段并打开下拉菜单,然后选择 删除(Delete) 删除标签变量。

image alt text

为了演示功能,我们特意留下了一个没有标签的火焰效果。

  1. 找到 工具栏(Toolbar),按 运行(Play)(PIE)

image alt text

最终结果

当按下数字1键时,你应该注意到,所有带有ActorsToFindTag的Bluprint_Fire_ Effect粒子均熄灭,而没有标签的火焰效果仍然存在。

image alt text

欢迎帮助改进虚幻引擎文档!请告诉我们该如何更好地为您服务。
填写问卷调查
取消