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

How do I get a random variant of an enum in GDScript, Godot 3.3?

我在 GDScript 中声明了一个枚举:

enum State = { STANDING, WALKING, RUNNING }

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

到目前为止,我试过这个:

State.get(randi() % State.size())

还有这个:

State[randi() % State.size()]

都不行。前者给了我 Null,后者给了我错误“无效的获取索引‘2’(基于:'Dictionary')。”

我怎样才能以实际可行的方式执行此操作?

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

State.keys()[randi() % State.size()]

之所以有效,是因为 keys() 将 State 字典转换为数组,可以使用 [] 对其进行索引。