1.在一个脚本中 new 另外一个脚本
如果在游戏运行时,在一个脚本 Main 中 new 另外一个脚本 A
那么这个脚本 A 将不会被触发 _ready() 而只剩下 _init() 可用
因为 _ready() 是由信号 NOTIFICATION_READY 触发的,而这个信号只在一个节点的所有子节点都收到 NOTIFICATION_READY 时才触发
而游戏运行时,这个节点的所有子节点已经收到了信号,因此该节点已经收到了信号 NOTIFICATION_READY,不会再次收到这个信号来触发新脚本中的 _ready() 了
还有一种情况是
Main.gd
extends Node
var a = A.new()
func _ready():
print(get_children())
A.gd
extends Node
class_name A
func _init():
print(get_children())
A.gd 中的 print(get_children()) 会打印 []
而 Main.gd 中的 print(get_children()) 会打印 Main.gd 所依附的节点的所有子节点,其中 new 出来的 A 不算是 Main.gd 所依附的节点的子节点
这就是一个很神奇的地方,new 出来的脚本不会像两个脚本共享一体那样,跟它的父脚本共享子节点,也不是一个独立的子节点