3.Actor 设置和测试

在最后这部分中,我们将控件蓝图作为 控件 组件添加到 Actor 并定义玩家按下 Enter 键时的出现的效果,检查输入的文本是否与 GoalText 相同。一切就绪后便可以测试最终效果。如代码正确,屏幕上将显示 Success;如代码不正确,将显示 Wrong Code

步骤

  1. 打开 KeypadDisplay 蓝图并添加一个 控件 组件,类设为 KeypadDisplayWBDraw at Desired Size。通过 Draw at Desired Size 可帮助渲染目标迅速匹配控件蓝图中所需的尺寸。

    Keypad15.png

  2. 打开 Keypad 蓝图并添加一个 控件 组件,将类设为 KeypadWBDraw at Desired Size

  3. 取消勾选此控件组件的 Window Focusable 选项。我们不希望此组件将焦点从 Keypad Display 控件移开,因此需要取消勾选此项。

    Keypad16.png

  4. 继续在 Keypad 中添加一个 WidgetInteraction 组件,将 Enable Hit Testing 设为 false。添加该 WidgetInteraction 组件后,就不需要在玩家角色中获取对 WidgetInteraction 组件的引用;禁用 Hit Testing,因为不需要它生成悬停效果。创建时,WidgetInteraction 组件默认设为 Virtual User Index 0,它们全部使用虚拟用户索引 ID(Virtual User Index ID)进行交流。玩家角色中的 WidgetInteraction 也使用虚拟用户索引 0,这和获取引用相同。

    Keypad17.png

  5. Keypad 图表上的 Event Begin Play 后,将 Widget 组件和 Get User Widget Object 连到 Cast to KeypadWB

    Keypad18.png

  6. As Keypad WB 引脚后执行 Set Widget Interaction 并通过第 4 步中的 WidgetInteraction 组件。

  7. As Keypad WB 引脚后,调用 Assign Enter Pressed 创建一个 Enter Pressed 自定义事件。点击 Enter 键后将调用该自定义事件,可用于检查输入的代码是否正确。

    Keypad19.png

  8. 创建一个名为 TargetDisplayKeypad Display Actor 类 变量 并将其设为 Editable

    Keypad20.png

  9. 创建一个名为 GoalTextText变量 并将 Default Value 设为 1212

    Keypad21.png

  10. 按住 Ctrl 拖入 TargetDisplay,以获取 WidgetUser Widget Object,以及 Cast to KeypadDisplayWB

    Keypad22.png

  11. As Keypad Display WB 引脚后,获取 Editable Text BoxGetText(Text Box),确定它是否 等于 Goal Text

    Keypad23.png

  12. 添加带两个 Print StringsBranch,其后是 True(使用 Success)和 False(使用 Wrong Code)。

    Keypad24.png

  13. KeypadKeypadDisplay 拖入关卡,并根据需要将它们旋转/放置。

  14. Keypad Actor 的 Details 面板中,将 Target Display 变量设置到关卡中的 KeypadDisplay

    Keypad25.png

  15. 在关卡中进行游戏。

最终结果

靠近小键盘显示,在其中 点击右键 进行聚焦。可查看按钮并在其上 点击右键 发送 Send Key Char 命令,传递数值进行显示。此例中我们使用鼠标右键和关卡中的控件进行交互,也可切换使用游戏手柄或运动控制器的按键。

此例在正确代码是否被输入时仅在屏幕上显示内容,也可替换为一些事件的触发,如开门、生成敌人或其他形式的游戏性事件。