用户 F5 实测:浮窗 boot 自动开把开始屏盖成调试面板(640×约700 居中面板盖掉大半个屏), 且菜单层没有任何浮窗入口(iter18 迁宿主两屏的理由=启动即开,已不成立)——关掉浮窗后 菜单上无法再开。用户令查三问(入口在哪/何时触发/触发后效果)后修正: - main.gd:_ready 删 boot 自动开浮窗(_debug_entry 门控保留);恢复菜单角标接线 (pressed→_on_debug_badge_pressed);可见性赋值挪到门控落定之后(原在 _build_ui 读到初始 false——首跑冒烟抓出) - ui_assembler:恢复右下角「调试」角标(git 历史 40fb4a5c^ 原实现:PRESET_BOTTOM_RIGHT 16px 角距+FS_HINT+豁免宽度基准)+ 返回键补 dbgbtn(首跑漏了返回键致 menu_screen 句柄 null、_build_ui 中断、V1c 层序红——冒烟抓出) - scenes/menu_screen.gd:暴露 dbgbtn 句柄 - debug_overlay.gd:desc 文案改三处入口说明(开始屏右下角/战斗屏 HUD/地图屏角标) - 探针/断言四处换代:smoke V2f 改「boot 不开浮窗+菜单角标可见」、V1a 收回严格判据; click_probe boot 检查反转+角标检查翻转为缺失才红+删浮窗恢复断言;tune_probe ① 改 角标真实点击开窗路径;shot_probe 删浮窗归一段(已成死代码)
34 lines
1.6 KiB
GDScript
34 lines
1.6 KiB
GDScript
class_name MenuScreen
|
|
extends Control
|
|
# 开始菜单屏壳(迭代 27 T1 场景拆分——审计 P0-1「场景作为组合单元/生命周期单元」第一步)。
|
|
# 视图代码原样构建(节点构建归 ui_assembler.gd 纪律不变——本屏壳只持有与暴露句柄);
|
|
# 按钮接线归组合根 main.gd(信号连接只在组合根)。
|
|
# 可独立实例化(F6/headless 挂载)——V2「各新屏场景可独立实例化」探针断言载体。
|
|
# main 组合根保留 _start_overlay 等句柄指向本屏成员——可见性开关与探针挂载假设零迁移。
|
|
|
|
var start_overlay: Control # 全屏菜单层(原 main._start_overlay——组合根可见性开关句柄不变)
|
|
var box: VBoxContainer
|
|
var lvbtn: Button
|
|
var resumebtn: Button
|
|
var campbtn: Button
|
|
var careerbtn: Button
|
|
var settingsbtn: Button
|
|
var quitbtn: Button
|
|
var dbgbtn: Button # 调试浮窗入口角标(2026-10-16 用户令恢复——boot 菜单优先,浮窗按需开)
|
|
|
|
const UiAssembler := preload("res://presentation/ui_assembler.gd") # 构建归装配器(规范 1.1——非全局类,preload 引用)
|
|
|
|
|
|
func _ready() -> void:
|
|
mouse_filter = Control.MOUSE_FILTER_IGNORE # 屏壳=纯容器(ui_input 实证:全屏 STOP 壳会吃掉下层模态鼠标输入)
|
|
var start: Dictionary[Variant, Variant] = UiAssembler.build_start_overlay(self, get_node("/root/ConfigDB"))
|
|
start_overlay = start.overlay
|
|
box = start.box
|
|
lvbtn = start.lvbtn
|
|
resumebtn = start.resumebtn
|
|
campbtn = start.campbtn
|
|
careerbtn = start.careerbtn
|
|
settingsbtn = start.settingsbtn
|
|
quitbtn = start.quitbtn
|
|
dbgbtn = start.dbgbtn
|