写一个非常简单的对话

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

再来看一下 scene01 的开头的关键代码

# scene01.rpy 22行
label scene01: # 表明这是 scene01 的入口
1
2

看了这些,我们应该能够大概了解程序运作的流程了,下面我再画一个本项目剧情脚本的流程图来帮助大家理解

程序运作流程

暂时不能理解的话不要紧,首先我们先来改一个简单的对话出来

# 一个简单的小对话

# 最简单的对话

为了能让程序进入到我们新做的对话,我们需要让程序跳转到我们新写的脚本中而不是 scene01 中,所以我们把上面的script.rpy 关键代码进行这样的修改

    # jump scene01 # 开始 scene01 的脚本,我们不到 scene01 了,所以注释掉(前面加一个“#”)这行(当然删了也行)
    jump demo # 开始我们的脚本,这个场景我们叫它 demo 好了
1
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

# 一个稍复杂的场景

接下来,我们来提高一下难度,做一个稍复杂的场景

先来改一下 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

同样,新建 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

通过这两个示例,相信你一定可以上手进行二创啦~