extends CanvasLayer ## 测试用跳关:右上角一排数字按钮,点一下直接跳到对应关卡; ## 键盘上按 1 / 2 / 3 也一样。 ## 只在编辑器 / 调试版里显示,导出的正式版会自动隐藏(和飞行一个规矩)。 @export var levels: Array[String] = [ "res://scenes/main.tscn", "res://scenes/level2.tscn", "res://scenes/level3.tscn", ] ## 强制在正式版里也显示(一般别开) @export var always_show: bool = false func _ready() -> void: visible = always_show or OS.is_debug_build() if not visible: set_process_unhandled_input(false) return var box := get_node_or_null("Buttons") if box == null: return var index := 1 for path in levels: var btn := Button.new() btn.text = str(index) btn.custom_minimum_size = Vector2(24.0, 24.0) btn.focus_mode = Control.FOCUS_NONE btn.add_theme_font_size_override("font_size", 12) btn.pressed.connect(jump_to.bind(path)) box.add_child(btn) index += 1 func _unhandled_input(event: InputEvent) -> void: var key := event as InputEventKey if key == null or not key.pressed or key.echo: return var n := 0 match key.physical_keycode: KEY_1, KEY_KP_1: n = 1 KEY_2, KEY_KP_2: n = 2 KEY_3, KEY_KP_3: n = 3 KEY_4, KEY_KP_4: n = 4 KEY_5, KEY_KP_5: n = 5 if n >= 1 and n <= levels.size(): jump_to(levels[n - 1]) func jump_to(path: String) -> void: get_tree().paused = false get_tree().change_scene_to_file(path)