语言基础
本页属于 GenPy Ren'Py 学习路线。教程内容面向 Ren'Py 8.x,并在页面末尾连接到 GenPy 的对应工作流。
学习目标
- 了解“语言基础”在 Ren'Py 项目中的用途。
- 能在一个最小项目里验证本章相关语法或工作流。
- 知道发布前需要检查的常见风险,并能在 GenPy 中继续维护。
核心语法
.rpyindentationstringscommentslabelCharacter
可运行示例
text
label start:
e "我在 start 块里。"
menu:
"选项 A":
e "我在选项 A 的块里。"
"选项 B":
e "我在选项 B 的块里。"
e "menu 结束后回到这里。"教程正文
Ren'Py 脚本语言介于“配置 + 编程”之间:常见叙事用简单语句,复杂逻辑可下沉到 Python。
1. 文件与语句
- 脚本文件后缀
.rpy,放在game/下,文件名/顺序不影响逻辑(靠 label 跳转)。 - 一行一条语句。语句分两类:
- say 语句(对话/旁白):一段带引号的字符串,可前置一个角色变量。
- 关键字语句:如
scene、show、menu、jump、if、python等。
text
"这是一句旁白。"
e "这是角色 e 说的话。"
scene bg room
jump chapter22. 缩进(block)
Ren'Py 用缩进表示从属关系(block),与 Python 一致:
- 用空格缩进,同一块缩进量必须一致(推荐 4 空格)。
- 不要用 Tab,混用会报错。
text
label start:
e "我在 start 块里。"
menu:
"选项 A":
e "我在选项 A 的块里。"
"选项 B":
e "我在选项 B 的块里。"
e "menu 结束后回到这里。"3. 注释
text
# 井号开头是单行注释,从 # 到行尾都会被忽略
e "你好" # 也可以写在语句后面Ren'Py 没有专门的多行注释语法;多行注释通常每行加 #,或在 python: 块里用三引号字符串。
4. 字符串与引号
- 字符串可用双引号
"..."或单引号'...'。 - 字符串内出现同类引号时用反斜杠转义:
"他说\"你好\"。"。 - 字符串内可用
[变量]做插值,{标签}做文本样式(见“文本与文本标签”一章)。 - 想显示字面量
[或{,写成[[和{{。
text
$ name = "艾琳"
e "我是 [name],很高兴见到你。"
e "强调:{b}重点内容{/b}。"5. 关键字语句速览
| 语句 | 作用 | 详见 |
|---|---|---|
define | 在加载期定义不变的对象(角色、图片等) | 07 |
default | 定义可变量的初值(参与存档) | 07 / 18 |
image | 定义图片名 | 05 |
scene / show / hide | 切换背景 / 显示 / 隐藏图像 | 05 |
with | 应用转场 | 12 |
play / stop / queue | 音频控制 | 09 |
menu | 玩家选择 | 06 |
jump / call / return | 控制流 | 03 |
if / elif / else / while | 条件与循环 | 08 |
$ / python: | 内联/块状 Python | 07 |
screen / label / transform | 定义界面 / 标签 / 变换 | 16 / 03 / 11 |
6. 名称与命名空间
- 角色、变量、label、image 名都在全局命名空间。
- 约定俗成:角色变量用短小写(
e,m,s),label 用语义化名字(chapter1,bad_ending)。 - 避免与 Ren'Py 内置名冲突(如
name、menu、config等谨慎使用)。
7. 一个完整最小示例
text
define e = Character("艾琳")
define m = Character("我", color="#88ccff")
label start:
scene bg room
with fade
show eileen happy at center
e "欢迎来到 Ren'Py。"
m "我该说点什么呢?"
menu:
"打招呼":
m "你好!"
$ friendly = True
"保持沉默":
"我什么也没说。"
$ friendly = False
if friendly:
e "你真有礼貌。"
else:
e "……气氛有点尴尬。"
e "再见!"
return常见坑
- 缩进不一致是最常见报错,统一用 4 空格。
define用于不变对象,default用于会变化且需存档的变量,别混。- label/变量名大小写敏感,
Start≠start。 - 字符串里要显示
[、{记得双写转义。
官方参考
在 GenPy 里怎么做
- 在 GenPy 的代码模式中维护相关 .rpy 文件,先保持语法清晰,再逐步加入本章功能。
- 用故事图谱、变量、校验或演出编辑器把“能运行”提升到“可维护”。
- 导出前结合 Ren'Py Lint 和 GenPy 校验结果,确认脚本、素材和发布路径一致。
推荐继续阅读:
