Godot 基本和进阶语法注意事项(长期更新)
多重继承 Godot 目前不支持多重继承。如果你有一个entity类继承自node,然后你有一个plant类,既要继承entity,又要有Sprite类的功能,这是不行的,只能通过增加child node,或使用singleton来实现。 Add a GDScript Trait system. · Issue #23101 · godotengine/godot (github.com) Inner Class 类的逻辑分组:如果一个类只对另一个类作用,那么将它嵌入那个另一个类并将两者保持在一起是合乎逻辑的,嵌套这样的"帮助类"使得它们的包更加简化。 内部类extend可以和外部类不一致,如外部extends Spatial, 内部extends Sprite godot中内部类不可访问外部类成员变量,这会造成cyclic dependence循环引用,可能在4.0会得到更好的解决 想要继承内部类, extends "somefile.gd".SomeInnerClass 不使用extends时,内部类是默认继承reference的,自带内存管理 类的初始化Init 如果覆写了_init()函数,则可以在new()时传入参数并初始化 extends Node2D func _ready(): var p = Creature.new("eagle") print (p.name) var q = Creature.new() print(q.name) class Creature extends Resource: var name = "" func _init(_name = "creature"): name = _name 带有参数的_init()在绑定到scene时,使用instance()不可以传入参数(_init参数需要默认值,否则可能报错),packedscene也没有new()函数 如果使用继承,则子类默认以空参数先执行父类_init() 继承和函数重写override 内置函数如_process(delta), _physics_process(delta),会自动调用继承父级的同名函数,顺序是先调用子级,再调用父...