HOME / 第 2 部分 · 核心概念与 GDScript 语法 / 第 13 课
MODULE 2 · 核心概念与 GDScript 语法

第 13 课 · 条件判断:if / elif / match

⏱ 预计时长 30 分钟📊 难度 入门📚 模块 第 2 部分 · 核心概念与 GDScript 语法

🎯 本课学习目标

程序之所以「聪明」,就是因为能根据条件做不同的事。本课掌握 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 的代码块边界。