如何在 GDScript、Godot 3.3 中获得枚举的随机变体?

New*_*yte 3 random enums gdscript godot

我在 GDScript 中声明了一个像这样的枚举:

enum State = { STANDING, WALKING, RUNNING }
Run Code Online (Sandbox Code Playgroud)

我想获得此枚举的随机变体,而不提及它的所有变体,以便稍后可以向枚举添加更多变体,而无需更改负责获取随机变体的代码。

到目前为止,我已经尝试过:

State.get(randi() % State.size())
Run Code Online (Sandbox Code Playgroud)

和这个:

State[randi() % State.size()]
Run Code Online (Sandbox Code Playgroud)

都不起作用。前者给我 Null,后者给我错误“无效的获取索引 '2'(基于:'字典')”。

我该如何以实际有效的方式做到这一点?

New*_*yte 6

这可以通过以下方式实现:

State.keys()[randi() % State.size()]
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为keys()将 State 字典转换为数组,可以使用[].