5.创建/编写游戏内暂停菜单的脚本


我们最后要创建一个简单的暂停菜单,以允许玩家暂停或退出游戏。

视觉:暂停菜单布局

在本节中,我们将为基础暂停菜单创建视觉布局。

  1. 打开 暂停菜单 控件蓝图

  2. 设计器 标签上,从 调色板 上将控件拖放到 层级 上,完成如下设置。

    Pause1.png

    我们的 画布面板 上有一个 边框,其中包含一个带 文本垂直框 和两个带 文本按钮

  3. 设计器 窗口中,重新调整 边框 大小使其填满整个点窗口(填充屏幕)。

    Pause2.png

    也可以通过 细节 面板中的 画刷色彩 选项更改色彩。

    Pause3.png

    您可能还想将色彩的 Alpha 通道值设为 0.5,增添一些半透明度。当在游戏进程中打开暂停菜单时,边框将填充屏幕,而添加一些半透明度将使游戏依然在背景中可见。

  4. 而对于 细节 面板中的 边框,务必使用填充屏幕锚。

    Pause4.png

    此举将确保边框能填充任意尺寸的屏幕。

  5. 层级 中选择 垂直框,然后在 细节 面板中同时令其水平和垂直居中。

    Pause5.png

  6. 垂直框 下选择 文本,然后在 内容细节 面板下输入 暂停菜单

    Pause6.png

  7. 在其他两个 文本 块输入 继续退出

    Pause7.png

  8. 按住 Ctrl 并选择 层级 中的两个 按钮,然后在 风格 下的 细节 面板中指定一个 悬停 色彩。

    Pause8.png

  9. 细节 面板中将 按钮 分别重命名为 继续退出

    Pause9.png

脚本:暂停菜单功能

完成外观设置之后,接下来我们将为暂停菜单提供脚本功能。

  1. 点击控件蓝图编辑器窗口右上角的 图表 按钮。

  2. 我的蓝图 窗口中的 图表 标签上,点击 退出按钮,然后在 细节 面板中添加一个 OnClicked 事件。

    PauseScript1.png

  3. 再为 继续按钮 添加一个 OnClicked 事件。

  4. 图表 窗口中,右击 并添加一个 Get Player Controller 节点。

    PauseScript2.png

  5. Get Player Controller 旁边,使用 设置输入模式仅限游戏,然后是 Remove from ParentSet Game Paused,即如下所示。

    PauseScript3.png

    此时,若点击 继续按钮,输入模式将设为仅限游戏,而暂停菜单激活时所显示的游标将被移除。通过使用 Set Game Paused 节点和不勾选 暂停Remove from Parent 节点可在离开暂停状态之前从显示屏上移除实际的暂停菜单控件。

  6. 创建一个新的名为 Remove HUD功能

    PauseScript4.png

    当暂停菜单激活时,我们将使用它从玩家的视线中移除游戏 HUD。

  7. 在功能中,添加一个 Get Player Character 节点并在 返回值 旁边添加 Cast ToFirstPersonCharacter 节点。

    PauseScript5.png

    这样我们便能访问正在被玩家使用的角色蓝图和游戏 HUD。

  8. As First Person Character**旁边,先后使用 Get HUD ReferenceRemove from Parent**,即如下所示。

    PauseScript6.png

    这样便能访问玩家角色使用的 HUD 并在退出游戏时将其从窗口移除。

  9. Event Graph 上,Get Player Controller 旁边使用设为 Set Show Mouse Cursor 节点。

    PauseScript7.png

    点击 退出 后,返回主菜单时将开启鼠标光标,以便进行菜单导航。

  10. 接下来添加上面创建的 Remove HUD 功能,然后添加 开放关卡(设为 主要 或主菜单所在的关卡名)并按如下方式进行连接。

    点击查看全图。

    两个按钮均已设好,最后需要做的便是允许玩家呼出暂停菜单并暂停游戏。

  11. 内容浏览器 中的 Content/FirstPersonBP/Blueprints 文件夹下,打开 FirstPersonCharacter 蓝图

    PauseScript9.png

  12. 在图表中,添加一个 M 按键事件和一个 Create Widget 节点(设为 暂停菜单) 并将 Return Value 提升为变量。

    PauseScript10.png

    虽然我们在这里使用了 M 按键作为呼出暂停菜单的输入,但您也可以将其设为任意键。我们称已被提升的变量为 Pause Menu Reference,因其为创建的暂停菜单存储了一个参考。

  13. 按住 Ctrl 并从 MyBlueprint 窗口拖入变量,并将其与一个 IsValid 节点连接起来。

    PauseScript11.png

    我们正进行检查以确定暂停菜单控件是否已被创建并存储于该变量中。

  14. Is Not Valid 针脚和 Create PauseMenu_C Widget 连接起来。

    PauseScript12.png

  15. 右击 并先后添加 Get Player Controller 节点和 Set Input Mode UI Only,然后按如下方式连接节点。

    PauseScript13.png

    按下 M 时,若之前已访问过暂停菜单,则无需再次创建,而是访问该变量。如这是第一次访问暂停菜单,则其将创建并存储为一个变量,以便之后访问。无论是哪种情况,在显示暂停菜单之前输入模式将设为仅限 UI(稍后我们会显示暂停菜单)。

  16. Pause Menu Reference 变量旁边,先后使用 Add to Viewport 节点和 Set Game Paused(将 已暂停 设为 )。

    点击查看全图。

    暂停菜单已经设好,现在开始测试。

  17. 点击 编译保存 按钮,然后点击 开始游戏 按钮在编辑器中进行测试。

    在游戏中时,按下 M 键(或您所指定的其他任意键)便能使游戏暂停并呼出暂停菜单。在此,可以使用 继续 按钮继续游戏,或使用 退出 按钮返回主菜单。

下节内容为使用 虚幻动态图形蓝图 的相关信息。