三关以内的小游戏,用场景切换比自己做「关卡加载器」干净。
门
Area2D 脚本:
gdscript
extends Area2D
@export_file("*.tscn") var next_scene: String
func _ready() -> void:
body_entered.connect(_on_enter)
func _on_enter(body: Node2D) -> void:
if body.is_in_group("player"):
get_tree().change_scene_to_file(next_scene)每扇门在检查器里指定下一关。不要在脚本里写死 res://level2.tscn。
切完玩家在哪
下一关场景里自己放 Player 实例,出生点用 Marker2D。不要指望上一关的玩家节点还在——change_scene_to_file 会卸掉整棵树。
需要跨关携带金币、血量,用 Autoload:
gdscript
extends Node
var coins := 0
var hp := 3失败重开
gdscript
func game_over() -> void:
get_tree().reload_current_scene()Autoload 里的分数不会自动清。重开标题时手动 reset()。
微型游戏先别上 ResourceLoader.load_threaded。三四个 tscn 同步切换足够。
