Choose your operating system:
Windows
macOS
Linux
在本指南中,您将了解如何为游戏创建暂停菜单并编写脚本。
若您从 UMG UI 快速入门指南 和 创建主菜单 开始操作,则可以使用与此指南相同的项目。
创建游戏内暂停菜单
在本节中,我们将创建基本暂停菜单的可视布局。
-
打开您的 暂停菜单(Pause Menu) 控件蓝图。
-
在 设计器(Designer) 选项卡中,将控件从 控制板(Palette) 拖放到 层级(Hierarchy) 上,实现以下设置。
在这里,我们使用一个 边框(Border) ,其中包含一个带 文本(Text) 的 垂直方框(Vertical Box) 和两个在 画布面板(Canvas Panel) 上有 文本(Text) 的 按钮(Button) 。
-
在 设计器(Designer) 窗口中,调整 边框(Border) 大小,使其填充整个虚线窗口(填充屏幕)。
您也可以在 细节(Details) 面板中的 笔刷颜色(Brush Color) 选项中更改颜色。
您还可能需要将颜色的 Alpha 设为 0.5 ,增添一些半透明度。当在游戏进程中打开暂停菜单时,边框将填充屏幕,而添加一些半透明度将使游戏依然在背景中可见。
-
而对于 细节(Details) 面板中的 边框(Border) ,请务必使用填充屏幕锚。
此举将确保边框能填充任意尺寸的屏幕。
-
在 层级(Hierarchy) 中选择 垂直方框(Vertical Box) ,然后在 细节(Details) 面板中使其同时水平和垂直居中。
-
选择 垂直方框(Vertical Box) 下的 文本(Text) ,然后在 内容(Content) 的 细节(Details) 面板中输入 暂停菜单(Pause Menu) 。
-
为其他两个 文本(Text) 块输入 继续(Resume) 和 退出(Quit) 。
-
按住 Ctrl 并在 层级(Hierarchy) 中选择两个 按钮(Button) ,然后在 细节(Details) 面板的 样式(Style) 下指定 悬停(Hovered) 的颜色。
-
在 细节(Details) 面板中分别将 按钮(Button) 重命名为 继续(Resume) 和 退出(Quit) 。
编写暂停菜单功能脚本
完成外观设置之后,接下来我们将为暂停菜单提供脚本功能。
-
在控件蓝图编辑器(Widget Blueprint Editor)窗口的右上角单击 图表(Graph) 按钮。
-
在 我的蓝图(My Blueprint) 窗口中的 图表(Graph) 选项卡上,单击 退出按钮(QuitButton) ,然后在 细节(Details) 面板中添加一个 点击时执行(OnClicked) 事件。
-
同样,为 继续按钮(ResumeButton) 添加一个 点击时执行(OnClicked) 事件。
-
在 图表(Graph) 窗口中 点击右键 并添加一个 Get Player Controller 节点。
-
从 Get Player Controller 节点连出引线,使用 Set Input Mode Game Only 节点,然后从 Get Player Controller 节点连出引线,使用 Set Show Mouse Cursor 节点并将其设为 False ,然后按以下方式连接 Remove from Parent 和 Set Game Paused 节点。
此时,如点击 继续按钮(Resume Button) 时,输入模式将被设为纯游戏,暂停菜单(Pause Menu)被激活时显示的光标将被移除。 Remove from Parent 节点用于在离开暂停状态之前从显示中移除实际的暂停菜单(Pause Menu)控件,其方式是使用 Set Game Pause 节点并不选中 Pause 。
-
创建一个名为 Remove HUD 的新 函数 。
当暂停菜单(Pause Menu)打开时,我们将使用此函数将游戏HUD从玩家的视图中移除。
-
在函数中添加一个 Get Player Character 节点并从 返回值(Return Value) 连出引线,添加 Cast ToFirstPersonCharacter 节点。
这样我们便能访问正在被玩家使用的角色蓝图和游戏HUD。
-
从 As First Person Character 节点连出引线,然后如下所示连接 Get HUD Reference 和 Remove from Parent 节点。
这样便能访问玩家角色正在使用的HUD,并在退出游戏时将其从视口中移除。
-
在 事件图表(Event Graph) 上,从 Get Player Controller 节点连出引线,使用 Set Show Mouse Cursor 节点并设为 True 。
点击 退出(Quit) 后,返回主菜单(Main Menu)时将打开鼠标光标以便进行菜单导航。
-
接下来,添加上面创建的 Remove HUD 函数,然后添加 Open Level (设为 主(Main) 或主菜单(MainMenu)所在关卡的名称),并按如下方式进行连接。
点击查看大图。 现在两个按钮均已设好,最后需要做的便是允许玩家呼出暂停菜单并暂停游戏。
-
在 内容浏览器(Content Browser) 的 Content/FirstPersonBP/Blueprints 下,打开 第一人称角色(FirstPersonCharacter) 蓝图。
-
在图表中添加一个 M 按键事件和一个 Create Widget 节点(设为 暂停菜单(Pause Menu) ),并将 返回值(Return Value) 提升为变量。
虽然我们在这里使用了 M 键作为呼出暂停菜单的输入,但实际山可以设置任意键。我们称已被提升的变量为 暂停菜单引用(Pause Menu Reference) ,因其为创建的暂停菜单保存了一个引用。
-
按住 Ctrl 从 我的蓝图(MyBlueprint) 窗口拖入该变量,并将其连接到一个 IsValid 节点。
现在,我们将查看暂停菜单(Pause Menu)控件是否已经创建并存储在该变量中。
-
将 Is Not Valid 引脚连接到 Create PauseMenu_C Widget 。
-
点击右键 并添加 Get Player Controller 节点,然后添加 Set Show Mouse Cursor 并将其设为 True 。
-
再次从 Get Player Controller 节点连出引线,然后连接 Get Player Controller Set Input Mode UI Only ,再如下所示连接这些节点。
按下 M 时,如果之前已经访问过暂停菜单(Pause Menu),则不需要重新创建它,而是访问变量。如果这是第一次访问暂停菜单(Pause Menu),则系统将创建它,然后将它存储为一个变量,以便以后访问。无论是哪种情况,在显示暂停菜单之前输入模式将设为仅限UI(稍后我们会显示暂停菜单)。
-
从 Pause Menu Reference 变量连出引线,使用 Add to Viewport 节点,然后选择 Set Game Paused (将 暂停(Paused) 设为 True )。
点击查看大图。 暂停菜单已经设好,现在开始测试。
-
点击 编译(Compile) 和 保存(Save) 按钮,然后点击 运行(Play) 按钮在编辑器中运行。
进入游戏后,按下 M 键(或指定的任意键)便能使游戏暂停并呼出暂停菜单。从此开始,您可以用 继续(Resume) 按钮继续游戏进程,或者用 退出(Quit) 按钮返回主菜单(Main Menu)。