Skip to content

文本与文本标签 ​

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

学习目标 ​

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

核心语法 ​

  • text tags
  • interpolation
  • {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 4

8. 自定义文本标签 ​

可注册自定义标签实现特效。官方做法是把标签函数放入 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 校验结果,确认脚本、素材和发布路径一致。

推荐继续阅读:

Built for GenPy creators.