生命周期 - 单次执行周期
节点的生命周期是指节点从出生(创建)到死亡(删除)的过程,这个过程中有几个关键的时间点,我们可以在这些时间点编写我们的逻辑代码,承载这些代码的方法就被称为生命周期方法。
我们之前见过 _ready
和 _process
方法,它俩就是两个最常见的生命周期方法。
[!tip]
生命周期方法不需要我们手动调用,Godot 会在内部自动调用它们。
_enter_tree
这个生命周期方法会在节点进入到场景树时执行,也就是节点出现时执行。
注意不要和下面的 _ready
搞混,在执行 _enter_tree
生命周期方法时可能还没有子节点,因为子节点还没有加入到场景树中。
_ready
当节点完全准备好时执行。
完全准备好是指子节点都执行完毕 _ready
和 _enter_tree
方法,并且当前节点执行完 _enter_tree
方法。
区分 _enter_tree 和 _ready
假设现在有一个这样的场景:
Control
LineEdit
TextureRect
其中 Control 节点有两个子节点,分别是 LineEdit 和 TextureRect,并给他们三个都加上相同的脚本:
extends Node
func _enter_tree():
# name 是指节点的名字
print (name + " enter tree")
func _ready():
print (name + " ready")
运行场景后,我们会看到这样的输出结果:
Control enter tree
LineEdit enter tree
TextureRect enter tree
LineEdit ready
TextureRect ready
Control ready
可见 _enter_tree
会最先执行,且父节点优先执行,而 _ready
最后执行,且父节点排在最后。
_exit_tree 节点离开场景树
顾名思义,当节点离开场景树时执行,且子节点优先执行。