Unreal4 设置和获取 Actor 引用 0006bate1
设置和获取 Actor 引用
使用 Actor 引用在关卡中移动不同的 Actors。
通过建立对 Actor 的引用,你可以在玩游戏期间通过蓝图或 C++ 访问其属性、变量、事件或函数(若适用),然后修改它们以满足你的游戏性需要。
例如,你想在玩家进入触发器盒时开灯,则建立对灯的引用,然后触发器盒将允许你通过将灯 Actor 键入到触发器盒的 OnComponentBeginOverlap 事件来实现此目标(这样,你就可以开灯)。
正确引用 Actor 对 Actor 之间的通信也很重要,因为错误指定引用将导致失败的通信和不良结果。
查看以下步骤,了解 设置 和 获取 Actor 引用的实例。
在此实例中,我们使用的是启用了 新手内容 的 Blueprint Third Person 模板。
1.在 放置Actor(Place Actors) 面板的 基本(Basic) 选项卡中,将一个 Box Trigger 拖入关卡。
![](https://img.haomeiwen.com/i1870200/dbd1d053bb1cee1e.jpg)
我们将利用它触发关卡中另一个 Actor的移动。
2.在 Box Trigger 的 Details 面板中,选择 Convert to Class Blueprint 选项。
![](https://img.haomeiwen.com/i1870200/1a3a25b01b6e8d37.jpg)
3.为蓝图命名,然后选择 Create Blueprint(蓝图编辑器 将打开)。
![](https://img.haomeiwen.com/i1870200/e78415bf8a0fc819.jpg)
4.在蓝图编辑器中的 My Blueprint 下,点击 Add Variable 按钮。
![](https://img.haomeiwen.com/i1870200/88faffd6d1d3f1ce.jpg)
5.点击变量,然后在 Details 面板中点击 Variable Type 按钮并在 Object Reference 下选择 Actor。
![](https://img.haomeiwen.com/i1870200/e129d8a4fc0f57b3.jpg)
6.将变量命名为 TargetActor 并点击 Editable 复选框。
![](https://img.haomeiwen.com/i1870200/4ff83e0a01a40887.jpg)
7.可输入显示文本,作为变量功能和用途的 提示文本。
![](https://img.haomeiwen.com/i1870200/74dbe3e8de6cf238.jpg)
8.点击控件蓝图编辑器窗口左上部的 Compile 按钮。
![](https://img.haomeiwen.com/i1870200/18ccdd4b5182b539.jpg)
9.最小化蓝图,返回主编辑器窗口,然后在关卡中选择 Box Trigger 蓝图。
10.在窗口的 Details 面板中,可以在 Default 下方看到 Target Actor 变量和提示文本。
![](https://img.haomeiwen.com/i1870200/ccaae1225f420e82.jpg)
11.前往 Content Browser 的 Content/StarterContent/Shapes 路径,添加三个 Shape_Cubes 至关卡中。
![](https://img.haomeiwen.com/i1870200/f847c217c257d02d.jpg)
12.向关卡添加资源后,在每个 Actor 的 Details 面板中将其移动性设为 Moveable。
![](https://img.haomeiwen.com/i1870200/34340afc603b44e4.jpg)
13.点击关卡中的 Box Trigger 蓝图。
14.在 Details 面板中,点击 Target Actor 下的 None 框,搜索 Shape(或为 Actor(s) 添加的其他名字)。
![](https://img.haomeiwen.com/i1870200/e97507078906ea4a.jpg)
15点击放大镜图标旁边的滴管图标。
![](https://img.haomeiwen.com/i1870200/585897c3a0f170eb.jpg)
16.将滴管图标移动至一个方块(或添加的其他资源)上,点击将其设为目标 Actor。
![](https://img.haomeiwen.com/i1870200/bf9319d6d7cefe53.jpg)
17.选择 Actor 时,Target Actor 变量将更新为 Details 面板中所选的 Actor。
![](https://img.haomeiwen.com/i1870200/b775dff71a67c4c0.jpg)
18.打开 Box Trigger 蓝图,然后在 MyBlueprint 窗口中点击眼睛图标并启用 Show Inherited Variables。
![](https://img.haomeiwen.com/i1870200/8f4f559f9239de43.jpg)
19.在 Trigger Base下,在 CollisionComponent 上 单击右键,选择 Add Event,然后再选择 Add OnComponentBeginOverlap。
![](https://img.haomeiwen.com/i1870200/cd49dad8bed0ee38.jpg)
20.按住 Ctrl 键将 TargetActor 变量拖入图表。
![](https://img.haomeiwen.com/i1870200/5591972e8ff041ae.jpg)
此操作将创建一个 Get 节点。此节点将获取指派给变量的所有内容,而该变量已被设为关卡中的一个 Actor。
21.拖动 TargetActor 节点,搜索并添加一个 Add Actor Local Offset 节点。
![](https://img.haomeiwen.com/i1870200/227b3ee0eabd0230.jpg)
22.以下图所示方式连接节点,然后将 Add Actor Local Offset 节点上的 Z 轴数值设为 500.0。
![](https://img.haomeiwen.com/i1870200/512ae3bb6d6c4994.jpg)
23.在 Components 窗口中,点击选中 TriggerBox_Blueprint。
![](https://img.haomeiwen.com/i1870200/b08d64d7a6c8c6df.jpg)
如果 Components 窗口不存在,可使用 Window 菜单选项将其启用。
24.在触发框 Details 面板的 Rendering 下,取消勾选 Actor Hidden In Game 选项。
![](https://img.haomeiwen.com/i1870200/9b52a634e41fb80f.jpg)
25.点击 Compile 编译和 Save保存,然后关闭蓝图。
26.在主编辑器窗口中,点击 Play 图标在编辑器中开始游戏。
当您进入触发框时,选定的 Actor 将上移 500 个单位。您每次进入触发框时,该框均将上移 500 个单位。建立引用后,变量便了解应该在触发框脚本中影响哪个 Actor。尝试利用该脚本影响关卡中另一个 Actor。
1.在关卡视口的主编辑器窗口中点击 Box Trigger 蓝图。
2.在 Box Trigger 的 Details 面板中,点击 Target Actor 旁的滴管图标。
![](https://img.haomeiwen.com/i1870200/4780690a78ceedb6.jpg)
3.在关卡视口中点击一个从未使用的 Actor。
4.再次在编辑器中开始游戏。
在此情况下,每次玩家进入触发框都会使所选的新 Actor 沿 Z 轴上移 500 个单位。通过对触发框脚本中 Target Actor 变量的使用,便不会被锁定在与脚本相关的特定 Actor 中并可对其进行修改;此外无需对蓝图进行修改便可改变其影响的 Actor。
该实例说明如何将不同对象四处移动。除移动对象外,可使用该方法在玩家按键时开门、开关不同光源、生成供玩家拾取或销毁的道具、以及其他各种功能。
这也是为 Actor 获取引用的多种方式之一。如需要为玩家角色获取引用却无法在主编辑器窗口清楚地进行设置,则须使用不同方法(查看下方 相关页面 章节)。