当我在 godot 中制作预加载脚本并在其中放入变量时,如何在其他脚本中调用该变量?
是否有一种特殊的方法来调用我不知道的变量,或者是否有比预加载脚本更好的方法?
如果您要预加载脚本,例如const item = preload("res://scripts/item.gd")它充当类型。也就是说,您可以将变量声明为它,并创建它的实例。脚本上声明的变量存在于其实例中:
const Item = preload("res://scripts/item.gd")
var my_item:Item
func _ready():
my_item = Item.new()
print(my_item.variable)
Run Code Online (Sandbox Code Playgroud)
请参阅自定义变量类型和类和节点。顺便说一句,不,Godot 中没有静态变量,请参阅关键字表中的“static”。
您可以预加载场景而不是脚本。在这种情况下,您会得到PackedScene,类似的规则也适用。但你会使用该instance方法。
我建议不要这样做,而是给class_name你的脚本加上 a 。Godot 会识别它并使其随处可用。请参阅将脚本注册为类。
请注意,这与访问场景树中另一个节点上定义的变量不同。如果您试图访问场景树中另一个节点的脚本中定义的变量,请使用get_node或类似的方式访问该节点,然后就可以访问该变量了。请参阅了解节点路径。
如果您需要一个全局变量,那么您想要的是“单例” 自动加载。您可以在项目设置的“自动加载”选项卡中将场景设置为自动加载(选择场景路径,为其命名,然后单击“添加”)。无论场景如何,它们都将在场景树上可用。他们坚持改变场景。
由于自动加载位于场景树上,因此您可以使用get_node来访问它们。该路径后面将"/root/"跟随您指定的名称。例如:
onready var global_variables = get_node("/root/GlobalVariables")
func _ready():
print(global_variables.variable)
Run Code Online (Sandbox Code Playgroud)