截止到3.1版GDScript支持声明static 方法但是不支持声明static 变量,我想主要是想简化整个系统的设计,这样对象的实例化顺序就可以完全依据节点树了。然而问题来了,如果想实现Singleton怎么办?不能声明static变量臣妾做不到啊。这个问题Godot已经为我们想到了,正如我之前所说“语言不够引擎来凑”,Godot提供了一个AutoLoad机制,请见官方文档《Singletons (AutoLoad)》里面文字配图说明得审视贴心到位,本文就不再敖述了。
范例:
定义一个SomeManager类
extends Node
#派生自Node
#不要给类起名字,即使用匿名类,因为3.1中支持定义类名,这样就会和注册在AutoLoad中的名字冲突
func do_something():
pass
extends RigidBody2D
#使用class_name关键字定义类名
class_name Bird
const velocity : Vector2 = Vector2(0,-200)
func _ready():
SomeManager.do_something()
pass
其中SmoeManager就是注册在AutoLoad中的名字,是全局变量名而不是类名