定义枚举
本课属于 Coddy GDScript 学习旅程的“逻辑与流程”单元。第 38 课,共 78 课。
枚举声明由关键字 enum、一个名称和花括号内以逗号分隔的选项组成。Godot 风格指南规定,名称采用 PascalCase,选项采用 CONSTANT_CASE:
enum Direction { NORTH, EAST, SOUTH, WEST }较长的 enum 可以每行写一个选项。最后一个选项后面可以加逗号:
enum Weapon {
SWORD,
BOW,
STAFF,
}你可以用 = 选择选项的值。没有设置值的选项会取前一个选项的值加上 1:
enum Difficulty { EASY = 1, NORMAL, HARD, NIGHTMARE = 10 }
# EASY = 1, NORMAL = 2, HARD = 3, NIGHTMARE = 10枚举也是一种数据类型。用它声明的变量会保存其中一个选项:
var level: Difficulty = Difficulty.HARD
print(level) # 3
print(level * 50) # 150脚本可以声明多个枚举,每个枚举都有自己的名称。如果省略名称,例如 enum { LEFT, RIGHT },这些选项就会成为脚本的常量,你可以直接写 LEFT,不需要添加前缀。
挑战
简单程序会读取敌人的基础伤害(一个整数)。难度越高,敌人的攻击越强:伤害等于基础伤害乘以难度的值。
- 在脚本的顶层,声明一个名为
Difficulty的枚举,其中包含选项EASY(值为1)、NORMAL、HARD和NIGHTMARE(值为10)。不要为NORMAL和HARD指定值,这样它们就会从EASY的值开始递增。 - 使用枚举选项进行计算,逐行输出每种难度下的伤害。
输入 12 时,输出为:
EASY: 12
NORMAL: 24
HARD: 36
NIGHTMARE: 120亲手试试
extends Node
# 在这里声明 Difficulty 枚举
func _ready():
var base_damage := int(OS.read_string_from_stdin())
# 输出每种难度下的伤害值
pass
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: GDScript 在线编译器