通过建立对 Actor 的引用,您可以在玩游戏期间通过蓝图或 C++ 访问其属性、变量、事件或函数(若适用), 然后修改它们以满足您的游戏性需要。
例如,您想在玩家进入触发器盒时开灯,则建立对灯的引用, 然后触发器盒将允许您通过将灯 Actor 键入到触发器盒的 OnComponentBeginOverlap 事件来实现此目标(这样,您就可以开灯)。
正确引用 Actor 对 Actor 之间的通信也很重要,因为错误指定引用将导致失败的通信和不良结果。
查看以下步骤,了解 设置 和 获取 Actor 引用的实例。
-
在 Modes 菜单中的 Basic 下,将一个 Box Trigger 拖入关卡。
我们将利用它触发关卡中另一个 Actor 的移动。
-
在 Box Trigger 的 Details 面板中,选择 Convert to Class Blueprint 选项。
我们将使用这个 Actor 创建一个 蓝图,并在其中指派一个存储引用 Actor 的变量。
-
为蓝图命名,然后选择 Create Blueprint(蓝图编辑器 将打开)。
-
在蓝图编辑器中的 My Blueprint 下,点击 Add Variable 按钮。
-
点击变量,然后在 Details 面板中点击 Variable Type 按钮并在 Object Reference 下选择 Actor。
在此我们制定引用为 Actor 类型,且为关卡中的一个 Object。
-
将变量命名为 TargetActor 并点击 Editable 复选框。
此操作将变量设为 Public,通过主编辑器窗口的 Details 面板可在此蓝图外对其进行访问和设置。该功能十分实用,无需进入蓝图即可对变量进行修改。
-
可输入显示文本,作为变量功能和用途的 提示文本。
在上图中输入的文本是 “The Actor to Target”。
-
点击控件蓝图编辑器窗口左上部的 Compile 按钮。
完成编译后它将变为一个绿色勾选标记。
-
最小化蓝图,返回主编辑器窗口,然后在关卡中选择 Box Trigger 蓝图。
-
在窗口的 Details 面板中,可以在 Default 下方看到 Target Actor 变量和提示文本。
-
前往 Content Browser 的 Content/StarterContent/Shapes 路径,添加三个 Shape_Cubes 至关卡中。
-
向关卡添加资源后,在每个 Actor 的 Details 面板中将其移动性设为 Moveable。
完成此设置后,可通过蓝图脚本移动 Actor。
-
点击关卡中的 Box Trigger 蓝图。
-
在 Details 面板中,点击 Target Actor 下的 None 框,搜索 Shape(或为 Actor(s) 添加的其他名字)。
点击 None 将显示当前关卡中的所有 Actors,但是我们只需要将添加的方块之一作为目标。
-
点击放大镜图标旁边的滴管图标。
在视口中点击它,将从关卡中选择一个 Actor 作为目标 Actor。
-
将滴管图标移动至一个方块(或添加的其他资源)上,点击将其设为目标 Actor。
-
选择 Actor 时,Target Actor 变量将更新为 Details 面板中所选的 Actor。
成为目标 Actor 的 Actor 将拥有 Set 引用。
-
打开 Box Trigger 蓝图,然后在 MyBlueprint 窗口中点击眼睛图标并启用 Show Inherited Variables。
此操作将在组件上添加事件。这些组件在最初将触发框转换为类蓝图时被继承。
-
在 Trigger Base**下,在 CollisionComponent 上 单击右键,选择 Add Event,然后再选择 Add OnComponentBeginOverlap**。
此操作将在图表上创建一个新的 Event 节点。
-
按住 Ctrl 键将 TargetActor 变量拖入图表。
此操作将创建一个 Get 节点。此节点将获取指派给变量的所有内容,而该变量已被设为关卡中的一个 Actor。
-
拖动 TargetActor 节点,搜索并添加一个 Add Actor Local Offset 节点。
此操作将添加当前目标的变化(可将其从当前位置移动)。
-
以下图所示方式连接节点,然后将 Add Actor Local Offset 节点上的 Z 轴数值设为 500.0。
此操作将获取目标的当前位置,并在触发框发生重叠时使目标沿 Z 轴上移 500 个单位。
-
在 Components 窗口中,点击选中 TriggerBox_Blueprint。
如果 Components 窗口不存在,可使用 Window 菜单选项将其启用。
-
在触发框 Details 面板的 Rendering 下,取消勾选 Actor Hidden In Game 选项。
此操作将使触发框在游戏中可见,便于判定玩家从何处进入。
-
点击 Compile 和 Save,然后关闭蓝图。
-
在主编辑器窗口中,点击 Play 图标在编辑器中开始游戏。
当您进入触发框时,选定的 Actor 将上移 500 个单位。您每次进入触发框时,该框均将上移 500 个单位。建立引用后,变量便了解应该在触发框脚本中影响哪个 Actor。尝试利用该脚本影响关卡中另一个 Actor。
-
在关卡视口的主编辑器窗口中点击 Box Trigger 蓝图。
-
在 Box Trigger 的 Details 面板中,点击 Target Actor 旁的滴管图标。
-
在关卡视口中点击一个从未使用的 Actor。
-
再次在编辑器中开始游戏。
在此情况下,每次玩家进入触发框都会使所选的新 Actor 沿 Z 轴上移 500 个单位。通过对触发框脚本中 Target Actor 变量的使用,便不会被锁定在与脚本相关的特定 Actor 中并可对其进行修改;此外无需对蓝图进行修改便可改变其影响的 Actor。
该实例说明如何将不同对象四处移动。除移动对象外,可使用该方法在玩家按键时开门、开关不同光源、生成供玩家拾取或销毁的道具、以及其他各种功能。