Menu
CoddyTech

定义枚举

本课属于 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,不需要添加前缀。

challenge icon

挑战

简单

程序会读取敌人的基础伤害(一个整数)。难度越高,敌人的攻击越强:伤害等于基础伤害乘以难度的值。

  1. 在脚本的顶层,声明一个名为 Difficulty 的枚举,其中包含选项 EASY(值为 1)、NORMAL、HARD 和 NIGHTMARE(值为 10)。不要为 NORMAL 和 HARD 指定值,这样它们就会从 EASY 的值开始递增。
  2. 使用枚举选项进行计算,逐行输出每种难度下的伤害。

输入 12 时,输出为:

EASY: 12
NORMAL: 24
HARD: 36
NIGHTMARE: 120

亲手试试

extends Node

# 在这里声明 Difficulty 枚举

func _ready():
	var base_damage := int(OS.read_string_from_stdin())
	# 输出每种难度下的伤害值
	pass
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: GDScript 在线编译器