2026 Ren'Py完全手册:新手快速上手场景切换+标签+转场效果

1794 字
9 分钟
2026 Ren'Py完全手册:新手快速上手场景切换+标签+转场效果

一、对话语法详解#

1.1 基本对话格式#

Ren’Py的对话系统采用简洁的say语句,支持三种基本格式:

旁白格式(无角色名):

"这是一句旁白,用于叙述故事或表达角色内心想法。"

角色对话格式(角色名+对话内容):

"艾琳" "你好,我是艾琳!"

角色对象格式(使用预定义角色):

e "Hello, world!"

1.2 角色定义方法#

Character对象用于控制对话的外观和行为:

define e = Character("艾琳", who_color="#c8ffc8", what_color="#ffffff")
# 更复杂的角色定义
define narrator = Character(None, what_italic=True, what_size=20)

常用角色参数

  • who_color:角色名称颜色

  • what_color:对话文本颜色

  • what_prefix/what_suffix:对话文本前缀/后缀

  • who_prefix/who_suffix:角色名前缀/后缀

  • image:关联的图片标签

1.3 对话样式设置#

文本标签用于局部样式控制:

e "这是{b}粗体文本{/b},这是{i}斜体文本{/i}。"
e "这是{color=#ff0000}红色{/color}和{size=30}大字体{/size}。"
e "这是{w=1.0}暂停1秒{/w}的文本。"

特殊对话效果

# 打字机效果
e "这段文字会逐字显示。"
# 暂停效果
e "我想想...{p}好的!"
# 表情符号和图片插入
e "表情符号:{image=smile.png}"

注意事项

  • 左花括号 { 和左方括号 [ 在对话中具有特殊含义,使用时需要重复

  • 引号需要使用反斜杠转义

  • 文本标签必须成对闭合,避免嵌套错误

二、选项与分支控制#

2.1 菜单选项创建#

基础菜单格式

menu:
"我应该怎么做?"
"喝咖啡":
"我喝了咖啡,味道很好。"
"喝茶":
$ drank_tea = True
"我喝了茶,尽量不发表政治声明。"
"离开":
jump leave_scene

2.2 条件选项显示#

使用if子句控制选项的显示条件:

menu:
"我想去哪里?"
"去公园" if park_available:
jump park_scene
"去咖啡馆" if cafe_open:
jump cafe_scene
"去秘密基地" if secret_unlocked:
jump secret_base

2.3 分支路径设计#

完整分支示例

label choices:
menu:
"选择你的道路":
"魔法之路":
$ path = "magic"
jump magic_training
"战士之路":
$ path = "warrior"
jump warrior_training
"学者之路":
$ path = "scholar"
jump scholar_training
label magic_training:
"你选择了魔法之路..."
if path == "magic":
"魔法课程开始!"
jump story_continues
# 分支合并点
label story_continues:
"无论选择哪条路,你都开始了你的冒险。"

2.4 条件判断语句#

if/elif/else结构

if points >= 100:
"太棒了!你获得了最高评价!"
elif points >= 60:
"不错!你及格了。"
else:
"还需要继续努力。"

复杂条件判断

if love > 50 and trust > 30:
jump good_ending
elif love > 30 or trust > 50:
jump normal_ending
else:
jump bad_ending

注意事项

  • 菜单选项至少需要有一个,否则会报错

  • 所有菜单选项的条件都不满足时,会跳过整个菜单

  • 使用jump跳转后,执行完目标标签不会自动返回

  • call语句可以跳转到其他标签并在执行完后返回

三、变量与数据存储#

3.1 变量定义与赋值#

define语句(定义常量):

define e = Character("艾琳")
define game_version = "1.0.0"

default语句(定义默认变量):

default love = 0
default money = 100
default inventory = []

单行Python语句

$ love += 10
$ name = "玩家"
$ items.append("剑")

3.2 常用数据类型#

字符串操作

$ greeting = "你好,"
$ name = "艾琳"
e "[greeting][name]!"

数值运算

$ score = 0
$ score += 5
$ double_score = score * 2

布尔值与条件

$ is_hero = True
$ has_item = False
if is_hero and not has_item:
"你是英雄,但还没有装备。"

列表和字典

$ items = ["剑", "盾", "药水"]
$ character_stats = {
"hp": 100,
"mp": 50,
"attack": 20
}

3.3 变量作用域管理#

命名存储区

# 在指定存储区定义变量
default sylvie.love = 0
default alice.love = 0
# 访问存储区变量
e "艾琳的好感度为[sylvie.love]"
e "爱丽丝的好感度为[alice.love]"

存储区访问

python:
from store import sylvie, alice
sylvie.love += 1
alice.love += 2

3.4 Persistent数据存储#

跨会话数据保存

# 设置默认值
default persistent.gallery_unlocked = False
default persistent.endings_seen = []
# 修改persistent数据
label ending_good:
$ persistent.endings_seen.append("good")
$ persistent.gallery_unlocked = True
"恭喜达成好结局!"

MultiPersistent多游戏数据共享

define mp = MultiPersistent("demo.game")
label start:
if mp.has_played_part1:
e "欢迎回来!你已经完成了第一章。"
else:
e "这是你的第一次冒险!"
$ mp.has_played_part1 = True
$ mp.save()

注意事项

  • define定义的变量不会随游戏存档保存

  • default定义的变量会自动包含在游戏存档中

  • persistent数据在游戏退出时保存,适合存储解锁内容

  • 避免在persistent中存储自定义对象实例

四、场景与标签系统#

4.1 场景切换语法#

基本场景切换

# 设置背景
scene bg classroom
# 带转场效果的场景切换
scene bg forest with dissolve
scene bg city with fade

常用转场效果

# 淡入淡出
scene bg night with fade
# 溶解效果
scene bg castle with dissolve
# 滑动效果
scene bg ocean with dissolve
# 拉帘效果
scene bg interior with curtains

4.2 角色立绘显示与隐藏#

显示角色

# 基本显示
show eileen happy at left
show sylvie normal at right
show alice worried at center
# 带转场效果
show eileen happy with dissolve
show sylvie normal at left with move
# 多角色显示
show eileen happy at left
show sylvie normal at right
show alice worried at center

隐藏角色

# 隐藏特定角色
hide eileen
# 带转场隐藏
hide sylvie with dissolve
# 隐藏所有角色
scene black

角色属性修改

# 临时修改(仅对当前对话生效)
e @ smile "我感到很开心!"
# 永久修改
e smile "我现在微笑着。"
# 组合使用
e sad@smile "从不开心到开心。"

4.3 标签系统#

基础标签定义

label start:
"游戏从这里开始。"
"欢迎来到视觉小说世界!"
jump chapter1
label chapter1:
"第一章开始..."
e "你好,我是艾琳。"

局部标签

label chapter1:
"这是第一章。"
label .intro:
"这是第一章的介绍部分。"
jump .main_story
label .main_story:
"这是第一章的主线剧情。"
jump .intro # 循环
label chapter2:
"第二章开始。"
jump chapter1.intro # 跳转到第一章的局部标签

带参数的标签

label show_stats(level=1, exp=0):
"等级:[level]"
"经验:[exp]"
return
label start:
call show_stats(5, 1000)
call show_stats(level=3, exp=500)

4.4 剧情流程控制#

jump语句(单向跳转):

label start:
"起点"
jump middle
label middle:
"中点"
jump end
label end:
"终点"

call语句(调用后返回):

label start:
"主剧情"
call sub_event
"返回主剧情"
label sub_event:
"子事件"
# 执行完会返回call语句后的代码

return语句(返回调用点):

label game_start:
menu:
"开始游戏":
jump main_story
"查看帮助":
call help_screen
"返回游戏菜单"
label help_screen:
"这是帮助信息。"
return # 返回到menu语句之后

特殊标签

# 游戏启动标签
label start:
"游戏从这里开始"
# 主菜单替换
label main_menu:
# 自定义主菜单逻辑
return
# 游戏退出标签
label quit:
"感谢游玩!"
return

注意事项

  • 场景切换会清除所有显示的图片

  • show命令会保持之前的显示,需要用hide清除

  • jump是单向跳转,call会记住返回位置

  • 局部标签只能在所属全局标签内直接引用

  • 标签名要具有描述性,便于代码维护

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

2026 Ren'Py完全手册:新手快速上手场景切换+标签+转场效果
https://www.kshare.top/posts/2026-renpy完全手册新手快速上手场景切换标签转场效/
作者
Kshare
发布于
2026-03-08
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
Kshare
Hello, I'm Kshare.
公告
欢迎来到Kshare站点!近期站点进行升级,欢迎访问和收藏站点!
音乐
封面

音乐

暂未播放

0:00 0:00
暂无歌词
分类
标签
站点统计
文章
137
分类
12
标签
59
总字数
333,011
运行时长
0
最后活动
0 天前

文章目录