创建暂停菜单

如何为游戏创建暂停菜单并编写脚本。

Choose your operating system:

Windows

macOS

Linux

在本指南中,您将了解如何为游戏创建暂停菜单并编写脚本。

若您从 UMG UI 快速入门指南 创建主菜单 开始操作,则可以使用与此指南相同的项目。

创建游戏内暂停菜单

在本节中,我们将创建基本暂停菜单的可视布局。

  1. 打开您的 暂停菜单(Pause Menu) 控件蓝图。

  2. 设计器(Designer) 选项卡中,将控件从 控制板(Palette) 拖放到 层级(Hierarchy) 上,实现以下设置。

    Pause1.png

    在这里,我们使用一个 边框(Border) ,其中包含一个带 文本(Text) 垂直方框(Vertical Box) 和两个在 画布面板(Canvas Panel) 上有 文本(Text) 按钮(Button)

  3. 设计器(Designer) 窗口中,调整 边框(Border) 大小,使其填充整个虚线窗口(填充屏幕)。

    InGamePause_5.3.png

    您也可以在 细节(Details) 面板中的 笔刷颜色(Brush Color) 选项中更改颜色。

    InGamePause_5.3.2.png

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

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

    InGamePause_5.4.png

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

  5. 层级(Hierarchy) 中选择 垂直方框(Vertical Box) ,然后在 细节(Details) 面板中使其同时水平和垂直居中。

    InGamePause_5.5.png

  6. 选择 垂直方框(Vertical Box) 下的 文本(Text) ,然后在 内容(Content) 细节(Details) 面板中输入 暂停菜单(Pause Menu)

    InGamePause_5.6.png

  7. 为其他两个 文本(Text) 块输入 继续(Resume) 退出(Quit)

    Pause7.png

  8. 按住 Ctrl 并在 层级(Hierarchy) 中选择两个 按钮(Button) ,然后在 细节(Details) 面板的 样式(Style) 下指定 悬停(Hovered) 的颜色。

    InGamePause_5.8.png

  9. 细节(Details) 面板中分别将 按钮(Button) 重命名为 继续(Resume) 退出(Quit)

    InGamePause_5.9.png

编写暂停菜单功能脚本

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

  1. 在控件蓝图编辑器(Widget Blueprint Editor)窗口的右上角单击 图表(Graph) 按钮。

  2. 我的蓝图(My Blueprint) 窗口中的 图表(Graph) 选项卡上,单击 退出按钮(QuitButton) ,然后在 细节(Details) 面板中添加一个 点击时执行(OnClicked) 事件。

    PauseMenuFunctionality_5.2.png

  3. 同样,为 继续按钮(ResumeButton) 添加一个 点击时执行(OnClicked) 事件。

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

    PauseScript2.png

  5. Get Player Controller 节点连出引线,使用 Set Input Mode Game Only 节点,然后从 Get Player Controller 节点连出引线,使用 Set Show Mouse Cursor 节点并将其设为 False ,然后按以下方式连接 Remove from Parent Set Game Paused 节点。

    PauseMenuFunctionality_5.5.png

    此时,如点击 继续按钮(Resume Button) 时,输入模式将被设为纯游戏,暂停菜单(Pause Menu)被激活时显示的光标将被移除。 Remove from Parent 节点用于在离开暂停状态之前从显示中移除实际的暂停菜单(Pause Menu)控件,其方式是使用 Set Game Pause 节点并不选中 Pause

  6. 创建一个名为 Remove HUD 的新 函数

    PauseMenuFunctionality_5.6.png

    当暂停菜单(Pause Menu)打开时,我们将使用此函数将游戏HUD从玩家的视图中移除。

  7. 在函数中添加一个 Get Player Character 节点并从 返回值(Return Value) 连出引线,添加 Cast ToFirstPersonCharacter 节点。

    ScriptPauseMenu_5.7.png

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

  8. As First Person Character 节点连出引线,然后如下所示连接 Get HUD Reference Remove from Parent 节点。

    PauseScript6.png

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

  9. 事件图表(Event Graph) 上,从 Get Player Controller 节点连出引线,使用 Set Show Mouse Cursor 节点并设为 True

    ScriptPauseMenu_5.9.png

    点击 退出(Quit) 后,返回主菜单(Main Menu)时将打开鼠标光标以便进行菜单导航。

  10. 接下来,添加上面创建的 Remove HUD 函数,然后添加 Open Level (设为 主(Main) 或主菜单(MainMenu)所在关卡的名称),并按如下方式进行连接。

    点击查看大图。 现在两个按钮均已设好,最后需要做的便是允许玩家呼出暂停菜单并暂停游戏。

  11. 内容浏览器(Content Browser) Content/FirstPersonBP/Blueprints 下,打开 第一人称角色(FirstPersonCharacter) 蓝图。

    PauseScript9.png

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

    PauseMenuFunctionality_5.12.png

    虽然我们在这里使用了 M 键作为呼出暂停菜单的输入,但实际山可以设置任意键。我们称已被提升的变量为 暂停菜单引用(Pause Menu Reference) ,因其为创建的暂停菜单保存了一个引用。

  13. 按住 Ctrl 我的蓝图(MyBlueprint) 窗口拖入该变量,并将其连接到一个 IsValid 节点。

    PauseMenuFunctionality_5.13.png

    现在,我们将查看暂停菜单(Pause Menu)控件是否已经创建并存储在该变量中。

  14. Is Not Valid 引脚连接到 Create PauseMenu_C Widget

    PauseScript12.png

  15. 点击右键 并添加 Get Player Controller 节点,然后添加 Set Show Mouse Cursor 并将其设为 True

  16. 再次从 Get Player Controller 节点连出引线,然后连接 Get Player Controller Set Input Mode UI Only ,再如下所示连接这些节点。

    按下 M 时,如果之前已经访问过暂停菜单(Pause Menu),则不需要重新创建它,而是访问变量。如果这是第一次访问暂停菜单(Pause Menu),则系统将创建它,然后将它存储为一个变量,以便以后访问。无论是哪种情况,在显示暂停菜单之前输入模式将设为仅限UI(稍后我们会显示暂停菜单)。

  17. Pause Menu Reference 变量连出引线,使用 Add to Viewport 节点,然后选择 Set Game Paused (将 暂停(Paused) 设为 True )。

    点击查看大图。 暂停菜单已经设好,现在开始测试。

  18. 点击 编译(Compile) 保存(Save) 按钮,然后点击 运行(Play) 按钮在编辑器中运行。

进入游戏后,按下 M 键(或指定的任意键)便能使游戏暂停并呼出暂停菜单。从此开始,您可以用 继续(Resume) 按钮继续游戏进程,或者用 退出(Quit) 按钮返回主菜单(Main Menu)。

欢迎帮助改进虚幻引擎文档!请告诉我们该如何更好地为您服务。
填写问卷调查
取消