forked from ABKQPO/GuideNH
-
Notifications
You must be signed in to change notification settings - Fork 2
Debug Mode zh CN
ABKQPO edited this page Jul 3, 2026
·
1 revision
GuideNH 包含了一个综合性的调试模式系统,供开发者和内容创作者实时检查和调试指南页面。
调试模式可以通过两种方式激活:
-
配置文件:在模组配置中启用"GUI 调试覆盖层"(
ModConfig.Debug.guiDebugMode) -
快捷键:在任何 GuideNH 界面按下
C + CTRL + SHIFT + ALT切换调试模式开关
当调试模式激活时,左下角会显示综合信息:
- 鼠标位置:当前光标坐标
- FPS 计数器:每秒帧数性能指标
- 内存使用:JVM 堆内存使用情况(已用/最大 MB 和百分比)
-
悬停元素:光标下元素的详细信息:
- 类名
- 位置(X, Y 坐标)
- 尺寸(宽度 × 高度)
- 元素特定的额外信息(因元素类型而异)
- 父元素:父容器的信息(启用时)
点击底部中心的"调试选项"面板可访问下拉菜单,包含以下选项:
将完整的文档层级结构以可视化树形结构输出到控制台。
切换悬停元素显示选项的子菜单:
- 显示任意(主开关)
- 显示位置
- 显示尺寸
- 显示主题
- 显示额外信息
- 显示轮廓
切换父元素显示选项的子菜单:
- 显示任意(主开关)
- 显示位置
- 显示尺寸
- 显示主题
- 显示轮廓
常规显示开关:
- 显示 FPS
- 显示内存
- 显示鼠标位置
强制重新编译当前显示的指南页面。
将当前调试信息导出到控制台(对问题报告很有用)。
当启用轮廓显示并悬停在元素上时,GuideNH 会绘制动画白色虚线边框:
- 悬停元素(完全不透明)
- 父元素(30% 不透明度,启用时)
动画流畅流动,便于识别元素边界。
一个小黑色标签框显示悬停元素的简化类名,位置在元素左上角附近。
绿色点标记精确的鼠标光标位置,用于精确坐标参考。
调试模式为不同元素类型提供定制信息:
- 段落:文本预览
- 标题:级别和文本预览
- 物品显示:物品信息
- 交互槽位:槽位详情
- 条形图/柱状图/饼图:图表数据信息
- Mermaid 思维导图:节点数量
- 指南场景:元素数量、场景结构
- 链接:目标地址
- 锚点:锚点名称
- 按钮:按钮状态
所有调试选项可通过模组配置 GUI 或 guidenh.cfg 配置:
-
debugTextColor:调试文本的 ARGB 颜色(默认:0xB4287BDC) -
debugOutlineColor:元素轮廓的 ARGB 颜色(0 表示镜像文本颜色) -
debugCursorColor:光标点的 ARGB 颜色(默认:0xCC00FF00) -
debugTextScale:调试文本的缩放因子(0.5-2.0,默认:0.8) -
debugOutlineThickness:轮廓边框厚度(0.5-5.0px,默认:1.0)
-
debugDashAnimationCycleMs:动画循环周期(500-10000ms,默认:2000) -
debugDashWidth:虚线宽度(0.5-5.0px,默认:1.0) -
debugDashOnLength:可见虚线段长度(1-20px,默认:4.0) -
debugDashOffLength:间隙段长度(1-20px,默认:4.0)
每种信息类型的独立开关(悬停元素、父元素、FPS、内存、鼠标位置等)
当调试模式禁用时(guiDebugMode = false),系统优化为零性能开销:
- 无帧计时计算
- 无内存监控
- 无元素检测
- 无渲染
所有调试相关的代码路径使用早期退出检查,确保对正常游戏的影响最小。
- 验证元素定位和尺寸
- 调试布局问题
- 检查场景元素结构
- 测试交互元素行为
- 追踪文档树层级
- 检查编译后的页面结构
- 监控页面渲染期间的性能
- 调试自定义元素实现
- 为问题报告导出文档树
- 捕获元素信息用于重现
- 在问题发生时监控性能指标
- 调试模式在指南页面导航时持久保留
- 设置保存到配置文件
- 树输出记录到 Minecraft 控制台/日志文件
- 调试覆盖层渲染在所有 GUI 元素之上
调试系统使用基于注册表的架构进行元素信息提取。开发者可以为mod特定的元素类型注册自定义提取器:
// 实现 DebugInfoExtractor 接口
public class MyCustomExtractor implements DebugInfoExtractor {
@Override
public boolean canHandle(LytNode node) {
return node instanceof MyCustomElement;
}
@Override
public void extract(LytNode node, HoveredElementInfo info) {
MyCustomElement element = (MyCustomElement) node;
info.addExtraInfo("自定义属性: " + element.getProperty());
}
@Override
public int getPriority() {
return 50; // 优先级越高,检查越早
}
}
// 在mod初始化时注册
DebugInfoExtractorRegistry.register(new MyCustomExtractor());内置提取器会自动注册,并处理:
- 文档结构(文档、段落、标题)
- 交互元素(槽位、按钮、链接)
- 图表(条形图、柱状图、饼图、折线图、散点图)
- 图示(Mermaid 思维导图)
- 媒体(图像、代码块、Latex)
- 容器(列表、表格、盒子)
- 3D 场景(指南场景)
- 通用块(回退)