Skip to content
On this page

替换第一个 Esc 菜单

这一页会制作一张真正可用的游戏内暂停菜单。完成后,玩家按 Esc 会看到三个按钮:继续游戏、打开经过 ChaUI 替换判断的设置页,以及本次强制打开 Minecraft 原版设置页。

开始前准备

  • 服务端与定制客户端均已正确安装 ChaUI 2.0.0。
  • 你可以使用 /chaui editor <页面ID> 打开页面编辑器。
  • 页面文件使用无 BOM 的 UTF-8,并放在 plugins/ChaUI/pages/ 或其子目录中。

页面文件名必须与根级 id 相同。下面示例应保存为:

text
plugins/ChaUI/pages/tutorial_pause_menu.yml

可直接复制的完整页面

yaml
id: tutorial_pause_menu
version: 1
title: 教程暂停菜单
size:
  width: window.width
  height: window.height
coordinateMode: absolute
display:
  mode: vanilla
  vanilla:
    target: pause_menu
vars: {}
events: {}
methods: {}
elements:
  - id: resume
    type: button
    layout:
      x: "window.width * 0.5 - 60"
      y: "window.height * 0.5 - 35"
      width: 120
      height: 20
    button:
      label: 继续游戏
      align: center
    events:
      leftClick: "close()"

  - id: options
    type: button
    layout:
      x: "window.width * 0.5 - 60"
      y: "window.height * 0.5 - 5"
      width: 120
      height: 20
    button:
      label: 设置
      align: center
    events:
      leftClick: '打开原版页面("options")'

  - id: vanilla_options
    type: button
    layout:
      x: "window.width * 0.5 - 60"
      y: "window.height * 0.5 + 25"
      width: 120
      height: 20
    button:
      label: 强制打开原版设置
      align: center
    events:
      leftClick: '打开原版页面("options", true)'

示例不依赖图片素材。按钮会使用 ChaUI 的基础外观;以后再给 button.pathbutton.hoverPath 添加皮肤即可。

如果你是手工新建或修改上面的 yml,保存文件后还要执行一次:

text
/chaui reload

手工文件只有在 reload 成功后才会进入页面缓存和新的原版菜单包。通过编辑器保存则不需要这一步:编辑器会在保存成功后立即重建并发布菜单包。

用编辑器制作

  1. 输入 /chaui editor tutorial_pause_menu
  2. 在页面属性中把页面模式改为“原版菜单”。
  3. 在稳定目标下拉框选择 pause_menu
  4. 添加三个按钮,按示例填写文字、位置和 leftClick 脚本。
  5. 进入预览,检查布局和按钮悬浮效果。
  6. 保存页面。

原版菜单模式不显示 allowEscClose。此类页面如何返回由当前原版上下文决定,不使用普通 screen 页面的 Esc 开关。

三个按钮分别做什么

close():继续游戏

pause_menu 中调用 close() 会关闭暂停菜单并继续游戏。动作成功后,当前脚本立即结束,写在它后面的语句不会继续执行。

正常打开设置

text
打开原版页面("options")

第二个参数省略时等同于 false。ChaUI 会正常检查当前活动包中是否有 options 替换页:有则显示替换页,没有则显示 Minecraft 原版设置页。

本次强制原版设置

text
打开原版页面("options", true)

true 只绕过这一次导航。之后再次打开 options 时仍会正常经过替换判断,活动页面包不会被修改或禁用。

保存与验证

编辑器成功保存 vanilla 页面后,会立即重建并发布菜单页面包,不需要再执行 reload;手工修改 yml 时则必须先执行 /chaui reload

  1. 回到游戏并按 Esc。
  2. 确认三个按钮均出现。
  3. 点击“继续游戏”,应回到游戏。
  4. 再按 Esc,分别测试两个设置按钮。
  5. 如果没有看到替换页,玩家仍应能够使用 Minecraft 原版暂停菜单,而不会卡在空白页面。

隔离预览不会真的导航

编辑器预览会提供示例原版页面状态,但不会真的关闭游戏、切换 Screen、连接服务器或退出客户端。需要在保存后的真实 Esc 菜单中完成动作验收。

常见失败

现象优先检查修正
仍显示原版 Esc 菜单display.modedisplay.vanilla.target必须分别为 vanillapause_menu
保存提示目标冲突是否已有另一页声明 pause_menu只保留一张目标页,或为另一页选择不同目标
按钮显示但点不到enabledpointerEvents、是否被上层组件遮挡使用默认启用状态,并让交互按钮参与命中
设置按钮没有进入目标页目标 ID 或参数类型目标写 options,第二参数只能是布尔值

接下来可以阅读目标与返回关系扩展导航,或阅读固定服务器入口制作标题主菜单。