学习来源

成功定义一个角色
SDK 版本 7.1.2

定义一个角色(Character)和一小段对话(dialogue)

1
2
3
4
5
# script.rpy里有这样一段
define e = Character('艾琳')

e "您已创建一个新的 Ren'Py 游戏。"
e "当您完善了故事、图片和音乐之后,您就可以向全世界发布了!"

一般情况下,脚本中角色的每段话都会导致对话窗口内容更新并暂停, 需要一个鼠标点击事件继续

定制化角色

角色对话内容可以进一步定制化

1
define e = Character("艾琳", who_color="#c8ffc8", window_background="frame.png")

这样定义角色的话,名字的文本颜色是#c8ffc8, 角色对话窗口背景使用图片”frame.png”
更多配置参考文档

立绘

1
define e = Character('艾琳', image="eileen")

renpy 在处理带有图像标签的角色定义时,会自动搜索 game/images 目录下所有文件名满足”eileen *“格式的图片文件,并与角色’e’关联
教程工程中,有三个’eileen’开头的图片文件,分别是

eileen concerned.png
eileen happy.png
eileen vhappy.png

图片标签都是 eileen, 后面的部分称作图像属性(attribute)
角色图像显示可以用 show 语句, 也可以用角色+图片属性的形式:

1
2
3
4
define e = Character('艾琳', image="eileen")
label start:
show eileen happy
e "很高兴认识你"

也可以写成:

1
2
3
define e = Character('艾琳', image="eileen")
label start:
e happy "很高兴认识你"
1
2
3
4
5
6
7
8
9
10
define e = Character("艾琳", image="eileen")

label start:
show eileen mad
e "我对你有点失望。"
# 如果在图像属性前面加一个 @ 符号,图像属性的改变将是临时性的,在执行完这行对话脚本后会恢复成上一个图像属性
e @ happy "虽然还挺有趣的。"
# 两种语法可以混用,在 @ 符号之前表示永久改变,符号后面表示临时改变一次。
e happy @ vhappy "真的!一切都改变了。"
e "不过别想我帮你从这档子破事里抽身。"

独白模式(monologue mode)

将角色的对话内容放进成对的三引号里 用空行分隔:

1
2
3
4
5
6
7
8
9
10
11
12
define e = Character('艾琳', image="eileen")

label start:
e """
学习Ren'Py第一步是看文档。

学习Ren'Py第二步是练习样例。

学习Ren'Py第三步是放弃。

或者……女装!
"""

其他操作

what_prefix & what_suffix

角色对话内容在开头或结尾自动加上前缀或后缀

1
define e = Character('艾琳', what_prefix="唔嗯", what_suffix="是也")

内插(interpolation)图片

举例来讲, 如果我们有个雪花的图片, 名叫 snowflake.png, 开头先定义一个 image:

1
2
3
4
5
6
7
8
# 图片两秒顺时针旋转一圈
image end_pic:
"snowflake.png"
size (16, 16)
block:
rotate 0
linear 2.0 rotate 360
repeat
1
2
3
4
define e = Character('艾琳', what_suffix="{image=endpic}")

label start:
e "嗯哼~"