文本与文本标签
本页属于 GenPy Ren'Py 学习路线。教程内容面向 Ren'Py 8.x,并在页面末尾连接到 GenPy 的对应工作流。
学习目标
- 了解“文本与文本标签”在 Ren'Py 项目中的用途。
- 能在一个最小项目里验证本章相关语法或工作流。
- 知道发布前需要检查的常见风险,并能在 GenPy 中继续维护。
核心语法
text tagsinterpolation{w}{p}{color}{font}
可运行示例
text
# gui.rpy 里设置中文字体
define gui.text_font = "fonts/SourceHanSansSC-Regular.otf"
define gui.name_text_font = "fonts/SourceHanSansSC-Bold.otf"
define gui.interface_text_font = "fonts/SourceHanSansSC-Regular.otf"教程正文
Ren'Py 的文本系统很强大:插值变量、富文本标签、逐字显示、字体与样式都在这里。
1. 变量插值 [ ]
text
$ name = "艾琳"
$ gold = 1234
e "你好,[name]!你有 [gold] 金币。"
e "保留两位小数:[ratio:.2f]" # 格式化
e "显示字面方括号:[[ 像这样 ]]" # 用 [[ 转义插值用方括号 [ ],支持 Python 格式化迷你语言([var!u] 大写、[var:>8] 右对齐等)。
2. 文本标签 { }(富文本)
text
e "{b}加粗{/b}、{i}斜体{/i}、{u}下划线{/u}、{s}删除线{/s}。"
e "{color=#f00}红色{/color}、{size=+10}变大{/size}。"
e "换行用{w}等待点击后{/w}继续。"显示字面花括号用 {{。
常用文本标签速查
| 标签 | 作用 |
|---|---|
{b}{/b} | 加粗 |
{i}{/i} | 斜体 |
{u}{/u} | 下划线 |
{s}{/s} | 删除线 |
{color=#rrggbb}{/color} | 颜色 |
{size=24} 或 {size=+4} | 字号(绝对/相对) |
{font=name.ttf}{/font} | 字体 |
{alpha=0.5}{/alpha} | 透明度 |
{outlinecolor=#000}{/outlinecolor} | 描边颜色 |
{=style} | 套用某个文本 style |
{a=action}{/a} | 超链接/可点击 |
{image=icon.png} | 内嵌小图标 |
{space=20} / {vspace=10} | 水平/垂直间距 |
{k=-1}{/k} | 字距调整 |
3. 节奏控制标签(打字机/停顿)
| 标签 | 作用 |
|---|---|
{w} | 等待点击后继续(不换行) |
{w=1.5} | 等待 1.5 秒后继续 |
{p} | 等待点击并换段(段落停顿) |
{p=1.0} | 停顿 1 秒并换段 |
{nw} | no-wait:显示完不等待,自动继续 |
{fast} | 此标签前的文字瞬间显示 |
{cps=20} | 本句每秒 20 字(character per second) |
{cps=*2} | 相对当前速度 2 倍 |
text
e "我在想……{w=0.8} 也许该出发了。"
e "这句话{nw}" # 显示完立即继续(常配合 extend)
e "{cps=10}慢慢地,一个字一个字地出现。"4. 逐字显示(打字机效果)
- 全局逐字速度由玩家在 Preferences 的 Text Speed 控制。
- 程序内默认速度可设
default preferences.text_cps,或用{cps=}局部控制。 - 玩家点击会立即显示整句(可在偏好关闭)。
5. 超链接与可点击文本
text
e "查看 {a=jump:secret}隐藏内容{/a}。"
e "打开 {a=https://www.renpy.org}官网{/a}。"
e "执行动作 {a=call:my_function}点这里{/a}。"6. 字体设置
- 全局字体在
gui.rpy:gui.text_font = "fonts/SourceHanSans.ttf"。 - 中文/日文需配置含 CJK 字形的字体(如思源黑体),否则中文不显示。
- 局部换字体用
{font=...}{/font}。
text
# gui.rpy 里设置中文字体
define gui.text_font = "fonts/SourceHanSansSC-Regular.otf"
define gui.name_text_font = "fonts/SourceHanSansSC-Bold.otf"
define gui.interface_text_font = "fonts/SourceHanSansSC-Regular.otf"7. 文本样式(style)
文本控件的颜色、字号、描边、行距等可在 style 里统一设置(见第 15 章):
text
style say_dialogue:
color "#fff"
size 28
outlines [(2, "#000", 0, 0)] # 2px 黑色描边
line_spacing 48. 自定义文本标签
可注册自定义标签实现特效。官方做法是把标签函数放入 config.custom_text_tags; 自闭合标签则放入 config.self_closing_custom_text_tags:
text
init python:
def shake_tag(tag, argument, contents):
# 返回处理后的 (kind, text) 列表
return contents
config.custom_text_tags["shake"] = shake_tag常见坑
- 中文不显示 → 没设含 CJK 的字体;改
gui.text_font等为思源黑体之类。 - 要显示字面
[/{→ 写成[[/{{。 {w}不换行、{p}换段,别混。{nw}常和extend搭配做连续显示效果。- 颜色用
#rrggbb或#rrggbbaa(含透明度)。
官方参考
在 GenPy 里怎么做
- 在 GenPy 的代码模式中维护相关 .rpy 文件,先保持语法清晰,再逐步加入本章功能。
- 用故事图谱、变量、校验或演出编辑器把“能运行”提升到“可维护”。
- 导出前结合 Ren'Py Lint 和 GenPy 校验结果,确认脚本、素材和发布路径一致。
推荐继续阅读:
