枚举

有时我们需要存储“有限数值”中的某一个值,例如角色的职业、元素的属性等。

此处用“星期”来举例子:var 今天是周几 = "星期一",此时当另一个人接手这个项目,或是你摸鱼许久再来填坑,可能不小心写了这样一行代码:if 今天是周几 == "周一":,在你的脑海中这是正确的,但在计算机眼里 "星期一""周一" 是两个完全不同的值,所以这个 if 语句的条件永远不会满足。

此时最简单的办法就是告知参与项目的所有人,规定 今天是周几 变量的值只能存放 "星期几",而不能写 周几 或 礼拜几。

但就像我在封装那一节说过的,总有一天这种规矩会被忘掉,所以我们干脆定义一种新的类型吧,就叫它 星期 类型:

enum 星期 {
    星期一,
    星期二,
    星期三,
    星期四,
    星期五,
    星期六,
    星期日,
}

上面这种语法就是在定义枚举,使用 enum 关键字表示定义枚举的开始,然后紧跟枚举的名称,此处枚举名是 星期,接着一对花括号,括号内部填写枚举的值,并用逗号分隔。(最后一个值后的逗号是可选的)

接下来结合强类型语法即可修改之前的 今天是周几 变量:

var 今天是周几: 星期 = 星期.星期一

[!tip]

枚举的定义位置应该在代码文件的最外层,不能在方法里定义枚举。

在游戏中枚举的用法例子:

enum 职业 {
    战士, 法师, 射手
}
enum 属性 {
    火, 水, 电,
}

常量

有时候我们需要一些不需要改变或不能改变的量,也就是常量,例如数学中的 π (3.14159)作为一个不变的数字,我们就可以把它存放在常量中。

当然圆周率这种常用的东西,Godot 已经给咱们存好了,这个常量叫做 PI

常量使用 const 关键字定义,语法格式与变量相同:

const <常量名> = <值>

由于常量不允许被修改,所以在定义时必须给它一个值。