写一个非常简单的对话
Luckykeeper 2022/5/4
本节文档介绍如何写一个非常简单的对话出来
# 脚本功能基本认知
看了上面一节,你可能还是觉得有点难度,这里我来带你实际来上手修改一下,写一个简单的场景
注意,在本节教程中,不需要你删除工程目录内的任何文件
我们知道,script.rpy
是程序的入口,我们先来看下入口的关键代码
# script.rpy 7099-7111行
label start: # start 表明这是程序入口
# 游戏开始
stop music fadeout 2.0 # 停止主菜单音乐
play sound "voice/effect/start.ogg" # 播放开始音效
with fade # 主菜单到正式游戏的过场
pause 0.8
# $ persistent.one = True # 调试用
$ persistent.gameStarted = True # 这里是一个持久性变量,暂时不理解不要紧
$ check_playthrough() # 自己写的一个周目处理函数,见 script.rpy 58-79行,暂时不理解也不要紧
jump scene01 # 开始 scene01 的脚本
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
再来看一下 scene01
的开头的关键代码
# scene01.rpy 22行
label scene01: # 表明这是 scene01 的入口
1
2
2
看了这些,我们应该能够大概了解程序运作的流程了,下面我再画一个本项目剧情脚本的流程图来帮助大家理解
暂时不能理解的话不要紧,首先我们先来改一个简单的对话出来
# 一个简单的小对话
# 最简单的对话
为了能让程序进入到我们新做的对话,我们需要让程序跳转到我们新写的脚本中而不是 scene01 中,所以我们把上面的script.rpy
关键代码进行这样的修改
# jump scene01 # 开始 scene01 的脚本,我们不到 scene01 了,所以注释掉(前面加一个“#”)这行(当然删了也行)
jump demo # 开始我们的脚本,这个场景我们叫它 demo 好了
1
2
2
这样,我们就让程序跳转到了 demo 而不是原本的 scene01 啦
但是此时,我们并没有 demo 的 label ,所以程序会不知道跳到那里,所以我们需要在 scripts
文件夹内新建一个 demo.rpy
(VSCode 内资源管理器空白区域->右键->新建文件->填写文件名称 demo.rpy
)
然后复制以下代码粘贴到该文件内
# demo.rpy 一个简单的对话
# 人物已经在 character.rpy 定义好了,
label demo: # 表明这是 demo 的开始
dong "大家吼呀~虽然现在是炎热的盛夏,但我还是一如既往的真冬"
ai "嘛呼"
"这样就生成了一个最简单的对话"
luckykeeper "嘛呼"
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# 一个稍复杂的场景
接下来,我们来提高一下难度,做一个稍复杂的场景
先来改一下 demo.rpy
文件
# demo.rpy 一个简单的对话
# 人物已经在 character.rpy 定义好了,
label demo: # 表明这是 demo 的开始
dong "大家吼呀~虽然现在是炎热的盛夏,但我还是一如既往的真冬"
ai "嘛呼"
"这样就生成了一个最简单的对话"
luckykeeper "嘛呼"
jump demo02 # 跳转到更复杂的 demo02
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
同样,新建 demo02.rpy
复制以下内容(请注意看注释)
# demo02.rpy 复杂场景的实现
# 人物已经在 character.rpy 定义好了,
label demo02: # 表明这是 demo02 的开始
# 下面的内容可能有点难,别怕,仔细看注释,一定会懂的
# image 定义一个图片
# bg 表明该图片是背景图片(background),它的名字被定义为“リビングa_昼”
# 等于号后面的是这个图片的具体位置
# 为什么要定义?
## 因为这样在用的时候就可以直接用“リビングa_昼”来指代这个路径的图片了,更加方便
image bg リビングa_昼 = "images/bg/リビングa_昼.png"
# scene 定义背景图片
## 需要注意调用 scene 会刷新掉当前画面的其他内容,后面会做示范,with 是变换方法,可参见 Ren'Py 官方文档
scene リビングa_昼 at truecenter with wiperight
# 背景音乐 ,fadein 是渐入
play music bgmfive fadein 1.0
# 这个方法是我们提供用来调整对话框小头像位置的参数,你可以尝试修改下面的数字,并观察效果
# 这个语句是针对真冬设计的参数,能够调整真冬在对话框里面的位置
# 更多参数,参考文档站 “代码规范”->“可用方法一节” https://love69-renpy-remaster-project.github.io/Doc/standard/%E5%8F%AF%E7%94%A8%E6%96%B9%E6%B3%95.html
$ sideimagesize.SideImageXalign = 0.08
$ sideimagesize.SideImageYalign = -29.35
$ sideimagesize.SideImageZoom = 0.95
# show 展示人物立绘,不需要提前定义,名称写图片名称,不加扩展名
# 真冬_制服_基本_おやつ3 位于 ./images/face/真冬/真冬_制服_基本_おやつ3.png
# at love69_left ,at 加方法,可用方法也请见 “代码规范”->“可用方法一节”,到里面提示的位置复制相应
# transform 方法到这里,先定义,后使用
# 使用方法前需要定义,方法使用 transform 定义
# 定义 love69_left 变换方法
transform love69_left:
zoom 1.5
xalign 0.5
yalign -0.09
linear 0.0 xalign 0.13
# 展示立绘
show 真冬_制服_基本_おやつ3 at love69_left with Dissolve(0.15)
# 对话,这里的“真冬_制服_基本_おやつ3”是小头像的内容,小头像已经先在 character.rpy 定义好了,定义方法请去
# 该文件内查看
# voice 需要放在对话之前,放在对话之后就是下一句对话的内容了
voice "voice/真冬/maf_a1_0086.ogg"
dong 真冬_制服_基本_にっこり "啊,心爱酱,早上好~ 给,欧尼酱,书包"
# 同一人物之间,可以不需要调用小头像调整参数
# 这里就注释掉真冬的小头像调整参数啦(相当于没有写)
# $ sideimagesize.SideImageXalign = 0.08
# $ sideimagesize.SideImageYalign = -29.35
# $ sideimagesize.SideImageZoom = 0.95
# 场景切换示例,这里要用 love69_bg1440 这个方法(这个素材分辨率是1920*1440),依然要先定义
transform love69_bg1440:
yalign 0.5
image bg 玄関_朝 = "images/bg/玄関_朝.png"
scene 玄関_朝 at love69_bg1440 with dissolve
# 真冬 「ごめんごめん。あ、心愛ちゃん梅昆布茶飲む?」
# 先在新的位置 show 新立绘,话说完了在 hide 旧立绘
show 真冬_制服_基本_にっこり at love69_left with dissolve
voice "voice/真冬/maf_a1_0088.ogg"
dong 真冬_制服_基本_にっこり "抱歉,抱歉,啊,心爱酱,你要喝梅昆布茶吗? "
hide 真冬_制服_基本_無表情
# 切换人物需要调用小头像调整函数,不同人物的调整数值不同,请参考 “代码规范”->“可用方法一节”
# 这个语句是针对心爱设计的参数,能够调整心爱在对话框里面的位置
$ sideimagesize.SideImageXalign = 0.10
$ sideimagesize.SideImageYalign = 15.72
$ sideimagesize.SideImageZoom = 0.96
# 心爱 「飲むー♪」
show 心愛_制服_おやつ_にっこり at love69_right with dissolve
voice "voice/心愛/cca_a1_0036.ogg"
ai 心愛_制服_おやつ_にっこり "嗯——姆——♪"
hide 心愛_制服_おやつ_不機嫌
# 停止背景音乐,fadeout 淡出
stop music fadeout 3.0
scene black with Dissolve(3.0)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
通过这两个示例,相信你一定可以上手进行二创啦~