Skip to content

文字特效 ​

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

学习目标 ​

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

核心语法 ​

  • textshader
  • default_textshader
  • {w}
  • {p}
  • custom text tags

可运行示例 ​

text
define config.default_textshader = "wave:10"

教程正文 ​

让文字“动起来”:波浪、抖动、缩放浮现、彩色渐变、逐字打字机。Ren'Py 8.2+ 引入 文本着色器(Text Shaders),配合经典文本标签,能做出丰富的文字演出。

1. 内置文本着色器一览 ​

开箱即用的内置 text shaders:

名称效果
typewriter打字机逐字显现(默认慢速文本的实现)
dissolve每个字溶入
wave上下波浪起伏
jitter随机抖动(紧张/颤抖)
flip翻转显现
zoom放大浮现
offset位移显现
slowalpha渐隐式慢显
texture / linetexture用纹理填充文字

2. 三种用法 ​

A. 文本标签(局部,段内某几个字) ​

text
"这是一封 {shader=zoom}从天而降{/shader} 的信。"
"我的手在 {shader=jitter}不停发抖{/shader}……"

B. textshader 属性(整句) ​

text
text "买 DLC 解锁更多剧情!" textshader "wave"

screen 里的文本同理,用 text_textshader 样式属性:

text
textbutton "购买" text_textshader "wave" action iap.Purchase("dlc")

C. 全局默认(影响所有对话文本) ​

text
define config.default_textshader = "wave:10"

默认 textshader 通常负责“慢速文本”的呈现;自定义全局默认时要兼顾慢显逻辑。

3. 给着色器传参 ​

参数跟在名字后,用 : 起始、逗号分隔;可显式写 uniform 名(双下划线):

text
text "颤抖吧" textshader "jitter:1.0, 3.0"          # 位置参数
text "颤抖吧" textshader "jitter:u__jitter=1.0, 3.0" # 具名 uniform

用 | 组合多个着色器:

text
text "又抖又波浪" textshader "jitter:1.0, 3.0|wave"

4. 打字机与慢速文本(经典做法) ​

不依赖着色器的传统逐字显示——靠文本标签与偏好:

text
# 临时改变本句速度(每秒字符数)
"这句话 {cps=10}慢慢地 一个字 一个字 蹦出来{/cps},然后恢复正常。"

# 等待与停顿
"想想看……{w=1.0} 答案其实很简单。"   # 等 1 秒再继续
"第一段。{p}第二段从新行开始。"          # 暂停并换段
"按一下继续{nw}"                         # 不等待点击,立即接下句

全局打字速度由玩家在“设置”里调(Text Speed),对应 preferences.text_cps。

5. 动态/装饰文本标签(颜色、字号、字体) ​

text
"普通,{b}加粗{/b},{i}斜体{/i},{color=#f66}红字{/color}。"
"{size=+10}变大{/size},{size=-6}变小{/size}。"
"{outlinecolor=#000}描边强调{/outlinecolor}"
"{font=fonts/special.ttf}换个字体{/font}"

彩虹/渐变文字可用多段 {color} 拼接,或用 texture 文本着色器贴渐变图。

6. 自定义文本着色器 ​

进阶可用 renpy.register_textshader(name, ...) 写自定义文字 GLSL 效果, 机制与第 32 章的 register_shader 类似但面向单字渲染。一般先复用内置/社区资源。

常见坑 ​

  • 文本着色器需要 Ren'Py 8.2+;老版本用 ATL/字符回调模拟。
  • {shader=...} 标签名要与已注册的 textshader 一致,参数语法是 名:参数|名2。
  • 改 config.default_textshader 会影响所有对话,注意别破坏慢速文本与点击继续。
  • 抖动/波浪类长时间全屏使用易致阅读疲劳,建议只点缀关键词。
  • {cps}、{w}、{p}、{nw} 是文本标签,和着色器可叠加使用。

官方参考 ​

在 GenPy 里怎么做 ​

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

推荐继续阅读:

Built for GenPy creators.