Skip to content

显示图像 ​

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

学习目标 ​

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

核心语法 ​

  • image
  • scene
  • show
  • hide
  • at
  • with

可运行示例 ​

text
image eileen happy = "eileen/happy.png"
image eileen sad   = "eileen/sad.png"
image bg room      = "bg/room.png"

教程正文 ​

视觉小说的画面由背景和立绘构成。Ren'Py 用 scene / show / hide 管理图层上的图像。

1. 图像命名规则(标签 + 属性) ​

图像名由空格分隔的若干词组成,第一个词是标签(tag),其余是属性(attributes):

text
image eileen happy = "eileen/happy.png"
image eileen sad   = "eileen/sad.png"
image bg room      = "bg/room.png"
  • 同一 tag(如 eileen)在屏幕上只存在一个,show eileen sad 会替换当前的 eileen。
  • 文件名能直接当图像名时可省略 image 定义:把 eileen happy.png 放进 images/, 即可直接 show eileen happy(自动图像定义)。

2. scene / show / hide ​

text
scene bg room          # 清空画面并设置背景(清掉除该图外的所有图像)
show eileen happy      # 显示立绘
show lucy mad          # 再显示一个
hide lucy              # 隐藏 lucy
  • scene tag:先清空当前层所有图像,再显示指定图(常用于换背景/换场景)。
  • show tag attrs:显示或更新某个 tag 的图像。
  • hide tag:移除某个 tag。

只改属性,不重新指定整名 ​

text
show eileen happy
show eileen sad        # 只换表情,位置/层级保持
show eileen           # 保留上次属性

3. 位置 at(position / transform) ​

用 at 指定内置位置或自定义 transform:

text
show eileen happy at left
show lucy mad at right
show eileen happy at center

内置位置:left、center、right、truecenter、offscreenleft、offscreenright 等。

也可应用自定义 transform(见第 11 章):

text
transform slight_left:
    xalign 0.35
    yalign 1.0

show eileen happy at slight_left

可叠加多个 transform:show eileen at left, flip。

4. 层级 zorder 与 behind ​

text
show eileen happy zorder 2
show lucy mad zorder 1            # 数字大在上层
show eileen happy behind lucy     # 放到 lucy 之后(下层)

5. 内联 ATL(直接写动画) ​

show ... : 后缩进可直接写 ATL 动画(见第 11 章):

text
show eileen happy:
    xalign 0.5 yalign 1.0
    linear 1.0 xalign 0.2     # 1 秒内滑到左边

6. 用转场显示(with) ​

text
scene bg room
with fade            # 整屏淡入淡出

show eileen happy
with dissolve        # 立绘溶解出现

with 对“本句之前累计的画面改动”整体应用转场(详见第 12 章)。

7. show layer / 多图层 ​

Ren'Py 默认图层有 master(角色背景)、screens、overlay。可对整层应用变换:

text
show layer master:
    zoom 1.05      # 给整个 master 层做轻微放大

也可自定义图层(config.layers)。

8. show expression(动态图像) ​

图像名在运行时算出时:

text
$ who = "eileen"
show expression who + " happy" as eileen

注意:用 expression 时建议加 as tag 指定一个稳定 tag,便于后续 hide。

9. 图像类型(可显示物) ​

image 右侧不止是文件名,还能是各种可显示物(Displayable):

text
image logo = "logo.png"                         # 普通图片
image bg black = "#000"                          # 纯色
image eileen happy = im.Scale("e.png", 200, 400) # 缩放(旧式 image manipulator)
image complex = Composite((300, 400),            # 合成多张图
    (0, 0), "body.png",
    (0, 0), "face_happy.png")
image eileen = LayeredImage(...)                 # 分层图像(见第 13 章)

现代写法更推荐用 transform 的 zoom/crop 而非旧的 im.* 操作器。

常见坑 ​

  • 同一 tag 只会有一个实例;想同时显示两个同源立绘,给不同 tag(或 as)。
  • scene 会清屏,show 不会;换背景但保留立绘时分别处理。
  • with 作用于“到此为止的所有画面变更”,注意把多条 show 放在同一个 with 之前可一起转场。
  • 文件名做自动图像名时,小写、用空格分隔属性、避免特殊字符。

官方参考 ​

在 GenPy 里怎么做 ​

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

推荐继续阅读:

Built for GenPy creators.