定义类

我们已经感受到了,在 Godot 中,一个 GDScript 脚本文件就是一个类,但某些情况下,我们需要一些小巧的类,我们懒得去再创建一个新的脚本文件了,此时就可以用内部类语法:

class <类名>:
    <类成员(方法、属性、信号等)>

例如我们用这种形式定义一个 伤害来源 类:

class 伤害来源:
    var 攻击者 = null
    var 伤害值 = 0
    var 是魔法吗 = false

可见,除开第一行 class 关键字外,其他的语法都正常的类相同。

但注意,这样定义的类被称作内部类,就是说这个伤害来源类是位于当前脚本文件类内部的类,所以外部脚本想要使用这个伤害来源类时,就需要使用 外部类.内部类 的形式来访问。

假设刚刚定义 伤害来源 类的文件中有一行 class_name 伤害相关,那么外部代码在使用 伤害来源 类时则需要:

var 伤害 = 伤害相关.伤害来源.new() # 实例化这个类

[!note] 非节点的类实例

上面的 伤害来源 例子中,这个类就没继承自任何一个节点父类,也就是说 伤害来源 并不是一种节点,当实例化了这个类时,游戏中确实会多出一个 伤害来源 实例,但这个实例不会对游戏产生直接影响,它的属性和方法仅供我们其它代码使用。