本来写一写 onready 的例子,结果看了下官方文档,额,言简意赅,我还是 copy 过来吧
https://docs.godotengine.org/zh_CN/latest/tutorials/scripting/gdscript/gdscript_basics.html
使用节点时, 通常希望将对场景部分的引用保留在变量中. 由于仅在进入 active 场景树时才保证要配置场景, 因此只有在调用 Node._ready() 时才能获得子节点.
var my_label
func _ready():
my_label = get_node("MyLabel")
这可能会有些麻烦,尤其是当节点和外部引用堆积时。为此,GDScript 具有关键字 onready,将成员变量的初始化推迟到调用 _ready()。它可以用一行替换上面的代码:
onready var my_label = get_node("MyLabel")
那我举个例子吧:
在 Node2D 节点下挂一个 Icon 节点,我想创建一个全局变量 a
来引用 Icon 节点
但是一运行就报错:
Parser Error: Use "onready var a = get_node(...)" instead.
还挺贴心,直接告诉你用 onready
,如果不想用 onready
则将 var a: Sprite = $Icon
移动到 _ready
中即可
func _ready():
var a : Sprite = $Icon
但是这样 a
就是局部变量了,所以要像官方 demo 里在外部先申明:
var a : Sprite
func _ready():
a = $Icon
值得一提的是,如果不存在 Icon
这个节点,则 a == null