You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Godot 3.3 GDScript如何无需枚举全部成员获取随机枚举值

GDScript 随机获取枚举成员的正确实现

错误原因

GDScript 中的枚举底层是键为枚举成员名称字符串、值为对应整数的字典,你之前的写法错误原因如下:

  • State.get(randi() % State.size()):get方法需要传入字典的键(也就是枚举成员的字符串名称),你传入随机整数找不到对应键,因此返回Null
  • State[randi() % State.size()]:直接用整数索引字典,由于字典不存在整数键,因此抛出索引不存在错误

正确实现

如果需要获取随机的枚举整数值,使用以下代码即可,后续新增枚举成员无需修改这段逻辑:

var random_state = State.values()[randi() % State.size()]

如果需要获取随机的枚举成员名称字符串,使用:

var random_state_name = State.keys()[randi() % State.size()]

补充说明

  • State.values()会返回枚举所有整数值组成的数组,State.keys()会返回所有枚举成员名组成的字符串数组,二者长度都和State.size()一致,且顺序和枚举定义顺序完全匹配
  • Godot 4 中也可以用randi_range(0, State.size() - 1)代替取模运算,写法更直观,效果完全一致:
# Godot 4 可选写法
var random_state = State.values()[randi_range(0, State.size() - 1)]

内容的提问来源于stack exchange,提问作者Newbyte

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 20:15:03