4.编写主菜单脚本


是时候来点真功夫了,下面我们来编写主菜单的功能脚本。在该步骤完成后,我们将能够使游戏启动并到达主菜单、开始游戏以及在选项菜单中更改分辨率。

  1. 打开 主菜单 控件蓝图并点击 图表 标签。

    Script1.png

  2. 我的蓝图 窗口中选择 游戏按钮,然后在 细节 面板中点击 点击时执行 旁的加号。

    Script2.png

    此举会将一个节点添加至图表,一旦点击按钮便执行功能。

  3. 为每个按钮添加 点击时执行 事件。

    Buttons.png

    我们已经在图表中排好按钮,清晰地模拟出菜单的布局。

  4. 点击时执行(游戏按钮) 旁边,添加一个 OpenLevel (设为 FirstPersonExampleMap)节点和一个 Remove from Parent 节点。

    PlayButton.png

    关卡名称 是指出需要加载的关卡名称的地方(在这个示例中为 First Person Example map)。Remove from Parent 节点将从窗口上移除 目标 控件蓝图。它的目标设为自身(即加载关卡后需要从视图中移除的主菜单控件蓝图)。

  5. 按住 Ctrl 拖入 MainMenuOptionsMenu 变量。

  6. 拖动 MainMenu 并添加 Set Visibility 节点。将 不可见性 设置为隐藏。

  7. 拖动并添加 Set Visibility 节点。将 不可见性 设置为可见。

  8. 将目标附加于 OptionsMenu 变量。

    OptionsButton.png

    这里我们将在点击选项按钮时关闭主菜单并开启选项菜单。

  9. 在每个 设置 按钮旁边添加一个 Execute Console Command 节点。

  10. 针对每项的 命令,使用 r.setRes XxY,这里的 X 和 Y 是要使用的尺寸。

    Resolution.png

    以上我们使用的是如下设置:640x4801280x7201920x1080

  11. 对于 返回按钮,重复步骤 6 但反转设置;因此结果是主菜单显示、选项菜单隐藏。

    ReturnButton.png

  12. 点击时执行(退出按钮) 旁边向命令 退出 添加 执行控制台命令 设置。

    QuitButton.png

  13. 编译保存,然后关闭控件蓝图

  14. 内容浏览器 中,打开 主要 关卡,然后打开 关卡蓝图

    OpenLevelBlueprint.png

  15. 在图表中 右击 并添加一个 Event Begin Play 节点,再连接一个 创建控件 (将 设为 主菜单)。

    EventBeginPlay.png

  16. 连接一个 Add to Viewport 节点并添加一个 Get Player Controller 节点。

  17. Get Player Controller 节点旁边,添加设为 Set Show Mouse Cursor 节点,然后 编译 并关闭蓝图

    FinishedLevel.png

  18. 打开 Content/FirstPersonBP/Blueprints 文件夹中的 第一人称角色 蓝图

  19. Event Begin Play 脚本之后,添加一个 Get Player Controller 节点,然后再添加一个 Set Input Mode Game Only 节点。

    PlayerCharacterBlueprint.png

    此举将关闭游标并将玩家的输入设为仅限游戏。

  20. 编译 并关闭蓝图,然后打开 世界设置

    WorldSettings.png

  21. 游戏模式 下,将 游戏模式覆写 设置为 第一人称游戏模式 并将 默认 Pawn 设为 角色

    Overrides.png

    在此,我们为该地图分配一个游戏模式,并更改玩家角色,让其使用可进行游戏的 第一人称角色 蓝图中的引擎默认角色;因为我们不希望玩家可以在主菜单后面四处乱跑并开火。

  22. 在主工具栏中点击 游戏 按钮即可在编辑器中进行游戏。如需测试分辨率选项,从 在编辑器中游戏 下拉菜单中选择 新建编辑器窗口

    点击上图播放视频。

    我们现在已经创建了功能齐全的主菜单,使玩家可以退出游戏、变更分辨率选项,或进行游戏(这将加载特定关卡并将玩家转到游戏进程中)。

在下一步中我们将添加一个游戏内的暂停菜单,帮助玩家暂停游戏进程或退出游戏并返回本文中的主菜单。