Skip to content

条件语句 ​

本页属于 GenPy Ren'Py 学习路线。教程内容面向 Ren'Py 8.x,并在页面末尾连接到 GenPy 的对应工作流。

学习目标 ​

  • 了解“条件语句”在 Ren'Py 项目中的用途。
  • 能在一个最小项目里验证本章相关语法或工作流。
  • 知道发布前需要检查的常见风险,并能在 GenPy 中继续维护。

核心语法 ​

  • if
  • elif
  • else
  • while
  • break
  • continue

可运行示例 ​

text
default money = 50

label shop:
    if money >= 100:
        e "你很有钱!"
    elif money >= 10:
        e "还过得去。"
    else:
        e "你身无分文。"

教程正文 ​

分支与重复逻辑用 if/elif/else 和 while。条件表达式就是 Python 表达式。

1. if / elif / else ​

text
default money = 50

label shop:
    if money >= 100:
        e "你很有钱!"
    elif money >= 10:
        e "还过得去。"
    else:
        e "你身无分文。"
  • 条件是任意 Python 布尔表达式:money >= 10、"剑" in inventory、met and not angry。
  • 缩进决定从属块。

2. 条件中的常见表达式 ​

text
if affection > 5 and chapter == 2:
    ...
if "key" in inventory:
    ...
if not seen_intro:
    ...
if flags.get("met_eileen", False):
    ...

3. while 循环 ​

text
$ count = 0
while count < 3:
    e "第 [count] 次循环。"
    $ count += 1

注意:while 里若包含会等待玩家的语句(如 say/menu),每轮都会停顿。 纯计算的循环建议放进 python: 块,避免逐句交互。

4. python 块里的循环(推荐用于纯计算) ​

text
python:
    total = 0
    for i in range(1, 11):
        total += i
e "1 到 10 的和是 [total]。"

for 只能在 Python 块里用(脚本层没有 for 语句,但有 while)。

5. 用条件控制剧情走向 ​

text
label check_ending:
    if affection >= 10:
        jump good_ending
    elif affection >= 0:
        jump normal_ending
    else:
        jump bad_ending

6. 菜单里的条件选项 ​

(详见第 6 章)选项后加 if 控制可见性:

text
menu:
    "使用钥匙开门" if "key" in inventory:
        jump open_door
    "撬锁":
        jump pick_lock

7. 三元与内联条件(在插值中) ​

文本插值里也能放表达式(需用 Python 计算后再插值,或用条件提前赋值):

text
$ mood = "开心" if affection > 0 else "冷淡"
e "她看起来很[mood]。"

8. 条件与回滚 ​

  • 改变量请保证它是 default 定义的,回滚才能正确还原。
  • 避免在条件里调用有副作用且不可回滚的函数;副作用尽量走存档变量。

常见坑 ​

  • 脚本层没有 for/switch;循环用 while,复杂遍历进 python: 块。
  • while 中包含交互语句会逐轮停顿,注意是否符合预期。
  • 比较字符串/数字类型要一致:renpy.input 返回字符串,需要 int(...) 转换。
  • 用 and/or/not(Python 关键字),不是 &&/||。

官方参考 ​

在 GenPy 里怎么做 ​

  • 在 GenPy 的代码模式中维护相关 .rpy 文件,先保持语法清晰,再逐步加入本章功能。
  • 用故事图谱、变量、校验或演出编辑器把“能运行”提升到“可维护”。
  • 导出前结合 Ren'Py Lint 和 GenPy 校验结果,确认脚本、素材和发布路径一致。

推荐继续阅读:

Built for GenPy creators.