Loading... ## 初始化顺序 ### 场景树生成前 >注意:场景树生成不代表节点都已完全初始化!!完全初始化工作还有收尾工作 _ready() 从上往下,从外往里,从`var`到`_init()` 。 ![场景树生成前节点初始化顺序](https://s1.ax1x.com/2020/03/16/8J991I.png) ![场景树生成前节点语句初始化顺序](https://s1.ax1x.com/2020/03/16/8J9u3n.png) ### 场景树生成后 从里往外,从上往下,从`onready var`到`_ready()`。 ![场景树建成后里节点初始化顺序](https://s1.ax1x.com/2020/03/16/8Gvna9.png) ![场景生成后节点语句初始化顺序](https://s1.ax1x.com/2020/03/16/8J964H.png) ## _ready() 节点默认自带的方法,会在场景树建成后,运行的方法。 ## onready 会在`_ready()`方法运行前运行。 使用节点时,通常希望将对场景部分的引用保留在变量中。由于仅在进入活动场景树时才保证要配置场景,因此只有在调用Node._ready()时才能获得子节点。 ```GDScript var my_label func _ready(): my_label = get_node("MyLabel") ``` 这可能会有些麻烦,尤其是当节点和外部引用堆积时。为此,GDScript具有`onready`关键字,它将成员变量的初始化推迟到调用`_ready()`为止。它可以用一行替换上面的代码: ```gdscript onready var my_label = get_node("MyLabel") ``` 最后修改:2020 年 07 月 15 日 04 : 17 PM © 允许规范转载