枚举和静态类型

Enums and static typing

我在一些 gdscript 代码中声明了一个枚举。

然后,我想将一些变量声明为那种类型的枚举。

这可能吗。我知道 GDScript 允许声明 var 的静态类型。我使用过的每种语言都允许您将枚举视为变量。

以下代码为我产生以下错误...

enum XDir {
    None,
    Left,
    Right
}

enum YDir {
    None,
    Up,
    Down
}

var x_dir : XDir
var y_dir : YDir

Parser Error: Identifier 'XDir' is not a valid type (not a script or class), or could not be found on base 'self'.

这还不可能。 GDScript 中的枚举是常量字典的语法糖,不是实际类型。

您必须使用 int 作为类型,直到枚举成为真正的类型。

请注意,您仍然可以向 export 提供枚举,例如

export(XDir) var x_dir: int

要在运行时强制执行枚举值,您可以执行以下操作:

assert(XDir.has(x_dir))