制作音乐回放
Luckykeeper 2022/5/18
本节文档介绍如何制作音乐回放,本篇难度稍高,强烈建议搭配源码学习
官方文档:https://www.renpy.cn/doc/rooms.html#music-room
# 前置知识
textbutton、imagebutton,见“QuickMenu(快捷菜单)的制作”一节
相对坐标表示法、绝对坐标表示法,见“添加不同大小的小头像”一节
持久化变量,见“设置和持久化变量”一节
本节内容与上节“制作Gallery”相似
# 需求描述
音乐回放是一般 Galgame 中非常常见的功能,在本节我们实现一个能够根据周目情况,判断是否开放音乐回放及开放多少音乐的音乐回放
# 音乐回放的实现
官方在这里也是给出了四步的方法,这里我们在判断是否要将音乐开放给玩家的方法和官方不大一样,官方文档给的方法是通过判断该音乐是否被玩家看过决定是否开放,而我们的实现结合了官方的方法和持久化变量的方法,判断该音乐是否被玩家听过(二周目开放的“世迷い恋慕”玩家一定是没有听过的),然后用持久化变量判断二周目通关后解锁该音乐
音乐回放代码也是需要分两个部分写,一部分是 screen ,也就是前面制作主菜单那里提到的给玩家看的 GUI ,而还有一部分是音乐回放的具体内容(也就是玩家能听到的音乐是什么),这部分需要放到初始化模块里面,我们来看代码
# screen 部分
也就是给玩家看的 GUI
音乐回放需要播放与主菜单不同的 BGM ,实现方法见最下的“进入退出音乐效果”
# 参考 Ver1.0 screens.rpy 2654-2764行
# ______________________________________________________________________________________________
# Music
screen music_room:
tag menu
add "gui/music_room/back.png"
# Spriterecordings Url
imagebutton:
xalign 0.636
yalign 0.725
idle "gui/music_room/btn_site_off.png"
hover "gui/music_room/btn_site_over.png"
selected_hover "gui/music_room/btn_site_one.png"
action OpenURL("http://spriterecordings.upper.jp/EmotiveBrilliance/")
# 2022年5月18日 发现这里写重了一次
# # 01_heartbeat
# imagebutton:
# xalign 0.0700899
# yalign 0.059
# idle "gui/music_room/btn_bgm01_off.png"
# hover "gui/music_room/btn_bgm01_onover.png"
# selected_idle "gui/music_room/btn_bgm01_on.png"
# action mr.Play("bgm/bgm01.ogg")
# 01_heartbeat
imagebutton:
xalign 0.0700899
yalign 0.059
idle "gui/music_room/btn_bgm01_off.png"
hover "gui/music_room/btn_bgm01_onover.png"
selected_idle "gui/music_room/btn_bgm01_on.png"
action mr.Play("bgm/bgm01.ogg")
# 08_あの夏まで
imagebutton:
xalign 0.0700899
yalign 0.2516
idle "gui/music_room/btn_bgm02_off.png"
hover "gui/music_room/btn_bgm02_onover.png"
selected_idle "gui/music_room/btn_bgm02_on.png"
action mr.Play("bgm/bgm05.ogg")
# prominence
imagebutton:
xalign 0.0700899
yalign 0.466
idle "gui/music_room/btn_bgm03_off.png"
hover "gui/music_room/btn_bgm03_onover.png"
selected_idle "gui/music_room/btn_bgm03_on.png"
action mr.Play("bgm/bgm03.ogg")
if persistent.two:
# 世迷い恋慕
imagebutton:
xalign 0.0700899
yalign 0.675
idle "gui/music_room/btn_bgm04_off.png"
hover "gui/music_room/btn_bgm04_onover.png"
selected_idle "gui/music_room/btn_bgm04_on.png"
action mr.Play("bgm/bgm49.ogg")
else:
imagebutton:
xalign 0.0700899
yalign 0.675
idle "gui/music_room/btn_bgm04_na.png"
# anonatsu_piano
imagebutton:
xalign 0.0700899
yalign 0.9
idle "gui/music_room/btn_bgm05_off.png"
hover "gui/music_room/btn_bgm05_onover.png"
selected_idle "gui/music_room/btn_bgm05_on.png"
action mr.Play("bgm/bgm08.ogg")
# あの夏rock1111
imagebutton:
xalign 0.685
yalign 0.063
idle "gui/music_room/btn_bgm06_off.png"
hover "gui/music_room/btn_bgm06_onover.png"
selected_idle "gui/music_room/btn_bgm06_on.png"
action mr.Play("bgm/bgm42.ogg")
# スターチス nightcore
imagebutton:
xalign 0.69595
yalign 0.2575
idle "gui/music_room/btn_bgm07_off.png"
hover "gui/music_room/btn_bgm07_onover.png"
selected_idle "gui/music_room/btn_bgm07_on.png"
action mr.Play("bgm/bgm47.ogg")
imagebutton:
xalign 0.99
yalign 0.99
idle "gui/saveload/btn_back_base.png"
hover "gui/saveload/btn_back_onMouse.png"
selected_hover "gui/saveload/btn_back_onClick.png"
action ShowMenu("main_menu_2")
# 页面下方的提示
vbox:
xalign 0
yalign 1.0
text "By Luckykeeper:想回顾全部 BGM?请参照{a=https://love69-renpy-remaster-project.github.io/Doc/dev/%E8%A7%A3%E5%8C%85.html}项目组文档站{/a}指南进行解包~"
# 进入退出音乐效果
on "replace" action mr.Play()
on "replaced" action Play("music", "bgm/bgm01.ogg")
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# 初始化部分
初始化部分写音乐回放需要播放的音乐
代码如下:
# 参考 Ver1.0 screens.rpy 2992-3006行,此处有所删改
init python: # 表示初始化阶段加载,必须加上
# MusicRoom 实例
# Step1,创建一个 MusicRoom 实例。
mr = MusicRoom(fadeout=1.0)
# Step2. 添加音乐文件。
mr.add("bgm/bgm01.ogg") # 01_heartbeat
mr.add("bgm/bgm05.ogg") # 08_あの夏まで
mr.add("bgm/bgm03.ogg", always_unlocked=True) # prominence
if persistent.two:
mr.add("bgm/bgm49.ogg", always_unlocked=True) # 世迷い恋慕
else:
mr.add("bgm/bgm49.ogg")
mr.add("bgm/bgm08.ogg") # anonatsu_piano
mr.add("bgm/bgm42.ogg") # あの夏rock1111
mr.add("bgm/bgm47.ogg") # スターチス nightcore
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18