分层图像
本页属于 GenPy Ren'Py 学习路线。教程内容面向 Ren'Py 8.x,并在页面末尾连接到 GenPy 的对应工作流。
学习目标
- 了解“分层图像”在 Ren'Py 项目中的用途。
- 能在一个最小项目里验证本章相关语法或工作流。
- 知道发布前需要检查的常见风险,并能在 GenPy 中继续维护。
核心语法
layeredimageattributegroupalwaysif
可运行示例
text
define e = Character("艾琳", image="eileen")
e happy "开心!"
e sad "难过……"教程正文
立绘往往由“身体 + 服装 + 表情 + 配件”多层叠加而成。layeredimage 让你声明这些层与属性, 再用 show name attr1 attr2 自由组合,避免为每种组合导出一张整图。
1. 基本结构
text
layeredimage eileen:
always:
"eileen/base.png" # 始终显示的底层(身体)
group outfit:
attribute dress default:
"eileen/dress.png"
attribute uniform:
"eileen/uniform.png"
group face:
attribute happy default:
"eileen/face_happy.png"
attribute sad:
"eileen/face_sad.png"
attribute angry:
"eileen/face_angry.png"使用:
text
show eileen happy # 默认 dress + happy
show eileen uniform sad # 切换服装与表情
e angry "我生气了!" # 配合 image= 的 say attributes2. always(恒显层)
always: 块里的图无条件显示,通常放身体/底图。可有多个 always 段。
3. group(互斥分组)
- 同一
group内的attribute互斥:一次只显示一个(如表情只一个)。 default关键字标记该组默认属性(未显式指定时显示它)。- 不同 group 之间可自由组合(服装 + 表情 + 发型……)。
4. group ... auto(自动按文件名生成)
auto 组会按命名规则自动扫描图片,省去逐个 attribute:
text
group face auto:
attribute neutral default
# 会自动匹配 eileen_face_*.png 这类文件,生成对应属性show eileen happy 会自动找到 auto 组里名为 happy 的图。
5. attribute 的条件与默认
text
layeredimage eileen:
attribute a
attribute b default when not a # 当没有 a 时,b 作为默认
attribute c default when not bdefault让属性默认存在,直到同组其它属性被指定。when 表达式让默认行为依赖条件。
6. if / else(按变量条件选层)
层的显示可绑定到游戏变量:
text
layeredimage eileen:
always:
"base.png"
if glasses == "evil":
"glasses_evil.png"
elif glasses == "normal":
"glasses_normal.png"
else:
passglasses 变化时立绘自动更新(无需重新 show)。
7. 给层加变换 / 偏移
属性块内可写 transform 属性或 ATL,对该层做定位/动画:
text
group accessory:
attribute hat:
"hat.png"
xoffset 10 yoffset -40 # 调整该层位置8. multiple 组(可同时显示多个)
普通 group 互斥;声明 group xxx multiple: 则组内属性可同时出现(如多个配饰)。
9. 与 say attributes 配合
给角色设 image="eileen",台词前写属性即可换表情/服装(见第 4 章):
text
define e = Character("艾琳", image="eileen")
e happy "开心!"
e sad "难过……"常见坑
- 各层 PNG 尺寸/对齐要一致(建议统一画布导出),否则错位。
always放底图;表情/服装放各自group,保证互斥正确。auto组依赖严格的文件命名规则,命名错了就匹配不到。- 层很多时注意性能与内存;可对静态组合做缓存。
官方参考
在 GenPy 里怎么做
- 在 GenPy 的代码模式中维护相关 .rpy 文件,先保持语法清晰,再逐步加入本章功能。
- 用故事图谱、变量、校验或演出编辑器把“能运行”提升到“可维护”。
- 导出前结合 Ren'Py Lint 和 GenPy 校验结果,确认脚本、素材和发布路径一致。
推荐继续阅读:
