文字特效
本页属于 GenPy Ren'Py 学习路线。教程内容面向 Ren'Py 8.x,并在页面末尾连接到 GenPy 的对应工作流。
学习目标
- 了解“文字特效”在 Ren'Py 项目中的用途。
- 能在一个最小项目里验证本章相关语法或工作流。
- 知道发布前需要检查的常见风险,并能在 GenPy 中继续维护。
核心语法
textshaderdefault_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}是文本标签,和着色器可叠加使用。
官方参考
- 文本着色器:https://www.renpy.org/doc/html/textshaders.html
- 文本标签大全:https://www.renpy.org/doc/html/text.html
- 自定义文本标签:https://www.renpy.org/doc/html/custom_text_tags.html
在 GenPy 里怎么做
- 在 GenPy 的代码模式中维护相关 .rpy 文件,先保持语法清晰,再逐步加入本章功能。
- 用故事图谱、变量、校验或演出编辑器把“能运行”提升到“可维护”。
- 导出前结合 Ren'Py Lint 和 GenPy 校验结果,确认脚本、素材和发布路径一致。
推荐继续阅读:
