Godot进行2D游戏开发入门-场景的切换

加载子场景

当前场景中加载下一个场景,当前场景不销毁

1
2
3
func _ready():
var menu_root = preload("res://scenes/menu.tscn").instantiate()
self.add_child(menu_root)

或者

1
2
3
func _ready():
var menu_root = load("res://scenes/menu.tscn").instantiate()
self.add_child(menu_root)

场景的销毁

1
2
3
4
5
var menu_root = preload("res://scenes/menu.tscn").instantiate()
self.add_child(menu_root)
await await get_tree().create_timer(10.0).timeout
self.remove_child(menu_root)
menu_root.queue_free()

场景的查找

查找所有的子

1
2
3
4
5
var menu_list = self.get_children()
if (menu_list.size()>0):
var menu = menu_list[menu_list.size()-1]
self.remove_child(menu)
menu.queue_free()

按名称查找

1
2
3
var menu = self.get_node("menu")
self.remove_child(menu)
menu.queue_free()

更换场景

销毁所有场景

切换场景,并销毁所有场景

1
get_tree().change_scene_to_file("res://scenes/menu.tscn")

替换当前场景

销毁当前场景,加载新场景

1
2
3
var main_root = preload("res://scenes/main.tscn").instantiate()
self.get_parent().add_child(main_root)
self.queue_free()

延迟执行任务

延迟10秒执行

1
await await get_tree().create_timer(10.0).timeout

退出游戏

1
get_tree().quit()

打印当前场景节点树

1
self.print_tree_pretty()