3.Actor 设置和测试
在最后这部分中,我们将控件蓝图作为 控件 组件添加到 Actor 并定义玩家按下 Enter 键时的出现的效果,检查输入的文本是否与 GoalText 相同。一切就绪后便可以测试最终效果。如代码正确,屏幕上将显示 Success;如代码不正确,将显示 Wrong Code。
步骤
打开 KeypadDisplay 蓝图并添加一个 控件 组件,类设为 KeypadDisplayWB 和 Draw at Desired Size。通过 Draw at Desired Size 可帮助渲染目标迅速匹配控件蓝图中所需的尺寸。
打开 Keypad 蓝图并添加一个 控件 组件,将类设为 KeypadWB 和 Draw at Desired Size。
取消勾选此控件组件的 Window Focusable 选项。我们不希望此组件将焦点从 Keypad Display 控件移开,因此需要取消勾选此项。
继续在 Keypad 中添加一个 WidgetInteraction 组件,将 Enable Hit Testing 设为 false。添加该 WidgetInteraction 组件后,就不需要在玩家角色中获取对 WidgetInteraction 组件的引用;禁用 Hit Testing,因为不需要它生成悬停效果。创建时,WidgetInteraction 组件默认设为 Virtual User Index 0,它们全部使用虚拟用户索引 ID(Virtual User Index ID)进行交流。玩家角色中的 WidgetInteraction 也使用虚拟用户索引 0,这和获取引用相同。
在 Keypad 图表上的 Event Begin Play 后,将 Widget 组件和 Get User Widget Object 连到 Cast to KeypadWB。
在 As Keypad WB 引脚后执行 Set Widget Interaction 并通过第 4 步中的 WidgetInteraction 组件。
在 As Keypad WB 引脚后,调用 Assign Enter Pressed 创建一个 Enter Pressed 自定义事件。点击 Enter 键后将调用该自定义事件,可用于检查输入的代码是否正确。
创建一个名为 TargetDisplay 的 Keypad Display Actor 类 变量 并将其设为 Editable。
创建一个名为 GoalText 的 Text 类 变量 并将 Default Value 设为 1212。
按住 Ctrl 拖入 TargetDisplay,以获取 Widget、User Widget Object,以及 Cast to KeypadDisplayWB。
在 As Keypad Display WB 引脚后,获取 Editable Text Box 和 GetText(Text Box),确定它是否 等于 Goal Text。
添加带两个 Print Strings 的 Branch,其后是 True(使用 Success)和 False(使用 Wrong Code)。
将 Keypad 和 KeypadDisplay 拖入关卡,并根据需要将它们旋转/放置。
在 Keypad Actor 的 Details 面板中,将 Target Display 变量设置到关卡中的 KeypadDisplay。
在关卡中进行游戏。
最终结果
靠近小键盘显示,在其中 点击右键 进行聚焦。可查看按钮并在其上 点击右键 发送 Send Key Char 命令,传递数值进行显示。此例中我们使用鼠标右键和关卡中的控件进行交互,也可切换使用游戏手柄或运动控制器的按键。
此例在正确代码是否被输入时仅在屏幕上显示内容,也可替换为一些事件的触发,如开门、生成敌人或其他形式的游戏性事件。