HOME / 第 2 部分 · 核心概念与 GDScript 语法 / 第 13 课
MODULE 2 · 核心概念与 GDScript 语法
第 13 课 · 条件判断:if / elif / match
🎯 本课学习目标
- 掌握 if / elif / else 条件分支
- 学会嵌套条件
- 会用 match 做多分支匹配
程序之所以「聪明」,就是因为能根据条件做不同的事。本课掌握 GDScript 的条件判断。
📖 详细教学步骤
if / elif / else 基础语法
根据条件执行不同代码:
GDSCRIPTvar hp = 30
if hp <= 0:
print("游戏结束")
elif hp < 50:
print("生命危险!")
elif hp < 100:
print("状态良好")
else:
print("满血!")
注意 GDScript 的缩进重点
- GDScript 用缩进表示代码块(不像 C 语言用花括号)
- 统一使用4 个空格(Godot 编辑器默认 Tab 会转成 4 空格)
- 缩进错了会直接报错,这是新手最常遇到的问题
GDSCRIPTvar x = 5
if x > 3:
print("x 大于 3") # ← 必须缩进,属于 if 的代码块
x = 10
print(x) # ← 不缩进,不属于 if,总会执行
判断语句的常见组合实操
结合逻辑运算符做更复杂的判断:
GDSCRIPTvar score = 150
var level = 2
# 同时满足两个条件
if score >= 100 and level >= 2:
print("解锁新关卡!")
# 满足其一
if score >= 1000 or level >= 5:
print("成为高级玩家")
# 取反
if not is_dead:
print("还活着")
match:优雅的多分支进阶
当要按「很多种情况」处理时,match 比一堆 elif 更清晰:
GDSCRIPTvar weapon = "sword"
match weapon:
"sword":
print("攻击力 10")
"bow":
print("攻击力 8, 远程")
"staff":
print("攻击力 12, 魔法")
_:
print("未知武器") # _ 表示默认情况
三目表达式(简化 if)进阶
简单的「二选一」可以用一行写完:
GDSCRIPTvar age = 18
# 如果 age >= 18 则为 "成年",否则 "未成年"
var status = "成年" if age >= 18 else "未成年"
print(status) # 成年
⚠️
报错 'IndentationError: 期望缩进块'?
说明 if 下面没有缩进的代码。if 下面至少要有一行缩进代码,若确实没事可做就写 pass。
⚠️
elif 写成了 else if?
GDScript 里没有 else if,是 elif。
🧪 动手试一试
🏋️ 课后练习
写一个根据分数评定等级的代码:90+ 优秀、60+ 及格、否则不及格,并用 match 实现一个根据星期几输出消息的功能。
if score >= 90: ... elif score >= 60: ... else: ...。match day: 1: print("周一") ...
💡
条件判断里注意优先级:and 比 or 更优先,不确定就加括号。
💡
多分支且情况固定时,优先用 match,代码更清晰。
🎓 本课小结
if/elif/else 实现条件分支,match 适合固定多分支,三目表达式简化二选一;缩进是 GDScript 的代码块边界。