替换第一个 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.path 和 button.hoverPath 添加皮肤即可。
如果你是手工新建或修改上面的 yml,保存文件后还要执行一次:
text
/chaui reload手工文件只有在 reload 成功后才会进入页面缓存和新的原版菜单包。通过编辑器保存则不需要这一步:编辑器会在保存成功后立即重建并发布菜单包。
用编辑器制作
- 输入
/chaui editor tutorial_pause_menu。 - 在页面属性中把页面模式改为“原版菜单”。
- 在稳定目标下拉框选择
pause_menu。 - 添加三个按钮,按示例填写文字、位置和
leftClick脚本。 - 进入预览,检查布局和按钮悬浮效果。
- 保存页面。
原版菜单模式不显示 allowEscClose。此类页面如何返回由当前原版上下文决定,不使用普通 screen 页面的 Esc 开关。
三个按钮分别做什么
close():继续游戏
在 pause_menu 中调用 close() 会关闭暂停菜单并继续游戏。动作成功后,当前脚本立即结束,写在它后面的语句不会继续执行。
正常打开设置
text
打开原版页面("options")第二个参数省略时等同于 false。ChaUI 会正常检查当前活动包中是否有 options 替换页:有则显示替换页,没有则显示 Minecraft 原版设置页。
本次强制原版设置
text
打开原版页面("options", true)true 只绕过这一次导航。之后再次打开 options 时仍会正常经过替换判断,活动页面包不会被修改或禁用。
保存与验证
编辑器成功保存 vanilla 页面后,会立即重建并发布菜单页面包,不需要再执行 reload;手工修改 yml 时则必须先执行 /chaui reload。
- 回到游戏并按 Esc。
- 确认三个按钮均出现。
- 点击“继续游戏”,应回到游戏。
- 再按 Esc,分别测试两个设置按钮。
- 如果没有看到替换页,玩家仍应能够使用 Minecraft 原版暂停菜单,而不会卡在空白页面。
隔离预览不会真的导航
编辑器预览会提供示例原版页面状态,但不会真的关闭游戏、切换 Screen、连接服务器或退出客户端。需要在保存后的真实 Esc 菜单中完成动作验收。
常见失败
| 现象 | 优先检查 | 修正 |
|---|---|---|
| 仍显示原版 Esc 菜单 | display.mode、display.vanilla.target | 必须分别为 vanilla 和 pause_menu |
| 保存提示目标冲突 | 是否已有另一页声明 pause_menu | 只保留一张目标页,或为另一页选择不同目标 |
| 按钮显示但点不到 | enabled、pointerEvents、是否被上层组件遮挡 | 使用默认启用状态,并让交互按钮参与命中 |
| 设置按钮没有进入目标页 | 目标 ID 或参数类型 | 目标写 options,第二参数只能是布尔值 |
猹件开发组