Language:
Page Info
Skill Level:
Share

2.控件蓝图设置

在这一步,我们创建互动UI控件的布局和单击按钮时将运行的脚本。

步骤

  1. 打开 KeypadDisplayWB,将层级中的 画布面板(Canvas Panel) 替换为 文本框,且在其外面包围 缩放框

    Keypad04a.png

  2. 对于该 缩放框,设置为 屏幕上需要(Desired on Screen),并将 宽度(Width)高度(Height) 重设为 100x50

    Keypad04.png

  3. 对于 文本框,将 提示文本(Hint Text) 设置为 1212,并将 字体大小(Font Size) 调整为 28

    Keypad05.png

    在这个例子中,玩家必须使用键盘输入文本1212才能发出输入成功的信号,不过你可以使用你需要的任何值。

  4. 打开 KeypadWB,将 层级(Hierarchy) 设置为创建3个按钮,分别带有文本 012,如下图所示。

    Keypad06.png

    你可能还需要在层级中的每个按钮上按 F2,将其名称更改为反映它们所代表的按钮。

  5. 添加第二个 水平框,其包含两个带文本的 按钮,一个设置为 Del,另一个设置为 Ent

    Keypad07.png

    我们的键盘上只有三个数字键,以及两个用来删除(Del)或提交(Ent)输入内容的键。

  6. 按住 Ctrl 并选择你的每个按钮,然后将每个按钮的 可聚焦(Is Focusable) 选项设置为 False

    Keypad08.png

    为了让我们的设置生效,我们需要确保与我们互动的其他任何控件都不会将焦点从Keypad Display控件上移开。如果我们将这些选项设置为true,那么当我们单击某个按钮时,焦点就会从Keypad Display控件转移到该按钮上,使我们无法将按键和值传递给Keypad Display控件。

  7. 图(Graph) 上,为每个按钮添加 OnClicked 事件。

    Keypad09.png

  8. 创建两个 变量,一个是 字符串 类型,名为 CharToSend,另一个是 控件交互组件 类型,名为 WidgetInteraction

    Keypad10.png

  9. 按住 AltCharToSend 拖入,连接到 OnClicked 事件,然后将变量值设置为Shown。

    Keypad11.png

  10. 按住 CtrlWidgetInteraction 拖入,然后从其拉出 发送键字符(Send Key Char),连接 CharToSendOnClicked 事件。

    Keypad12.png

    我们在此处使用 发送键字符(Send Key Char) 功能作为Slate中的文本框,这使得键不会被直接发送给它们,例如他们不会识别出A键被按下并发送A。实际上它们只会侦听发送字符,而下级系统运算代码可以进行其他操作,例如确定Shift键是否在A键被按下的同时也被按下,或者按下A键时大写锁定是否被打开。

  11. Del OnClicked事件,使用 按下并松开按键(Press and Release Key) 设置为来自 WidgetInteraction 变量的 Backspace

    Keypad13.png

  12. 创建一个名为 EnterPressed事件调度器,并从 OnClicked(Ent) 调用它。

    Keypad14.png

最终结果

我们的控件蓝图已设置为显示我们的键盘,接下来我们将把它们作为控件组件添加到Actor蓝图,这样就能让它们出现在我们的关卡中。 在下一步结束时,我们应该就能测试我们的系统,在游戏过程中与两个元素进行交互。