枚举
有时我们需要存储“有限数值”中的某一个值,例如角色的职业、元素的属性等。
此处用“星期”来举例子:var 今天是周几 = "星期一"
,此时当另一个人接手这个项目,或是你摸鱼许久再来填坑,可能不小心写了这样一行代码:if 今天是周几 == "周一":
,在你的脑海中这是正确的,但在计算机眼里 "星期一"
和 "周一"
是两个完全不同的值,所以这个 if 语句的条件永远不会满足。
此时最简单的办法就是告知参与项目的所有人,规定 今天是周几
变量的值只能存放 "星期几"
,而不能写 周几 或 礼拜几。
但就像我在封装那一节说过的,总有一天这种规矩会被忘掉,所以我们干脆定义一种新的类型吧,就叫它 星期
类型:
enum 星期 {
星期一,
星期二,
星期三,
星期四,
星期五,
星期六,
星期日,
}
上面这种语法就是在定义枚举,使用 enum
关键字表示定义枚举的开始,然后紧跟枚举的名称,此处枚举名是 星期
,接着一对花括号,括号内部填写枚举的值,并用逗号分隔。(最后一个值后的逗号是可选的)
接下来结合强类型语法即可修改之前的 今天是周几
变量:
var 今天是周几: 星期 = 星期.星期一
[!tip]
枚举的定义位置应该在代码文件的最外层,不能在方法里定义枚举。
在游戏中枚举的用法例子:
enum 职业 {
战士, 法师, 射手
}
enum 属性 {
火, 水, 电,
}
常量
有时候我们需要一些不需要改变或不能改变的量,也就是常量,例如数学中的 π (3.14159)作为一个不变的数字,我们就可以把它存放在常量中。
当然圆周率这种常用的东西,Godot 已经给咱们存好了,这个常量叫做
PI
常量使用 const 关键字定义,语法格式与变量相同:
const <常量名> = <值>
由于常量不允许被修改,所以在定义时必须给它一个值。