Skip to content

自定义音频

音频文件应为 accmp3oggwav 格式之一,文件名作为音频ID。使用音频时会生成默认的同名元数据JSON,允许您编辑并在在下次游戏启动时应用音频文件元数据。

通过在元数据中设置"type": "BGM",音频将作为 BGMData 而不是 SoundData 实例化。您还可以在元数据中自定义BGM的小节部分。

Sound 文件夹中的子目录将作为音频ID前缀。例如,AI_PlayMusic 将使用 Instrument/sound_id,因此如果您打算替换乐器音乐,应该将同名音频文件放在 Instrument 文件夹中。

您可以使用相同的ID覆盖现有的游戏内音频。例如,小鸡的叫声使用ID Animal/Chicken/chicken,那么您可以在 Sound/Animal/Chicken/ 文件夹中准备一个名为 chicken 的音频文件来覆盖它。

通过 CWL 自动加载的音频会作为可用游戏资源,任何使用音频的地方都可以通过ID播放自定义音频。

例如:

cs
pc.PlaySound("clown_horn"); // <- Card.PlaySound
SE.PlaySound("clown_horn");

自定义BGM/播放列表

版本需求

此功能需求 CWL 1.19.0 及以后版本。

游戏自带100+首BGM,它们拥有一个数字ID和音频ID。

BGM 列表
BGM ID音频 IDBGM 名称
1001 no bgmNo BGM
2002 pop01Pop01
3003 PSML516PSML516
4004 hoshinokisekiHoshi No Kiseki
5005 elomap1Tyris 1
6006 elomap2Tyris 2
7007 elomap3Tyris 3
8008 town2 magicTown 2
9009 fun villageFun Village
10010 bouken no junbiBouken No Junbi
11011 bukikoubouBuki Kobo
12012 kiminoita natsuKiminoita Natsu
13013 ruinsRuins
14014 village1Village
15015 Atlantean_Twilight256Atlantean Twilight
16016 intro2Intro 2
17017 cobaltCobalt
18018 mitologiaMitologia
19019 morning breezeMorning Breeze
20020 morning breeze(sunny day)Morning Breeze(Sunny Day)
21021 PSML047PSML047
22022 Pyramid-naibuPyramid
23023 mysterious-forestMysterious Forest
24024 PSML514PSML514
25025 nodokana muraNodokana Mura
26026 kokyoKokyo
27027 fun gameMayonakano Omochabako
28028 kagayaku tsukiKagayaku Tsuki
29029 MapBGMMap BGM
30030 a moment in the morningA Moment In The Morning
31031 SBGMv2_05SBGM 5
32032 daybreakDaybreak
33033 hoshi to tsukiHoshi To Tsuki No Oka
34034 ep2Epilogue 2
35035 nibiiro no soraNibiiro No Sora
36036 oita kataribeOita Kataribe
37037 kaerimichi pianoKaerimichi(Piano)
38038 moriMori
39039 rainaRaina
40040 laid back guitarsLaid Back Guitars
41041 earlgreyEarlgrey Guitar
42042 mayonakano-parkMayonakano Park
43043 Along-the-riverside-roadAlong the riverside road
44044 heya_guitar 1Heya Guitar
45045 Sancho_Panza 1Sancho Panza
46046 dwarfDwarf
47047 nonbiri dwarfNonbiri Dwarf
48048 nazoooki shindenNazoooki Shinden
49049 kamigamiga nemuru bashoKamigamiga Nemuru Basho
50050 titleTitle
51051 yukiYuki
52052 dark themeFear 2
53053 hoardHoard
54054 The House of LeavesThe House of Leaves
55055 BGM_0 sirube-2Sirube
56056 orc01Orc01
57057 VillageMearas Village 2
58058 PSML060PSML060
59059 tyris4Tyris 4
60060 mayoimichiMayoimichi
61061 hyousetsuHyousetsu
62062 workshopMearas Workshop
63063 shopShop
64064 TownMearas Town
65065 soaringSoaring
66066 soraochiSoraochiruhi
67067 WizartoriumWizartorium
68068 grayGray
69069 escapeEscape
70070 arifureta shiawaseArifureta Shiawase
71071 TaikutsuTaikutsu
72072 Netherworld_ShantyNetherworld Shanty
73073 tabinohajimeTabino Hajime
74074 gagGag
75075 happyMearas Happy
76076 villageMearas Village 3
77077 dragon and toastDragon and Toast
78078 legend of oneLegend of One
79079 koudouKoudou
80080 big mojoBig Mojo
81081 exoticsExotics
82082 magic cityMearas Magic City
83083 gothicGothic
84084 fieldField
85085 PSML0515PSML515
86086 anosoraAnosorano Mukouni
87087 memoryMemory
88088 memory 2Memory 2
89089 semi yuugataSemi. Yuugata.
90090 hirusagariHirusagari Kibun
91091 nichiyoNichiyo No Gogo
92092 itazuraItazura Kids
93093 cat lifeCat Life
94094 ensolaradoEnsolarado
95095 BGM3 11BGM3-11
96096 BGM3 7varBGM3-7 Var
97097 BGM3 11var 1BGM3-11 Var
98098 Pixel MythPixel Myth
99099 TsukitowatashiTsukito Watashi
100100 Tsukino KobuneTsukino Kobune
101101 flashbackFlashback
102102 punipuniPunipunichuiho
103103 sabakuSabakuwo Iku
104104 butouButoukai
105105 anime OPElin OP
106106 anime EDElin ED
107107 BGM3-1 1BGM3-1
108108 wafuWafu
109109 Into LegendAnd Thus Into Legend
110110 defenderDefender
111111 snow forestSnow Forest
112112 hirahiraHirahira
113113 lunaLuna
114114 orc05Orchestra 5
115115 xmasHoly Night
116116 xmas 2Jingle Bell
117117 atonementShokuzai No Mori

添加新BGM

自定义BGM放置在 Sound/BGM 子文件夹中,与自定义音效不同,您需要手动编辑元数据 JSON 中的 id 字段。确保先启动游戏一次,以便让 CWL 为您生成文件。

CWL 建议您使用 ogg 或者 wav 格式,因为Elin的Unity版本(2021.3.34f1)所使用的解码器很容易出现MP3解码错误。

id 是一个任意独特数字,设置为大于游戏最后使用的BGM ID(117),并足够独特以避免撞车。

重要说明, 这个 id 仅用于BGM。您的音效 ID 仍然是不含拓展名的文件名,例如 BGM/Happy Birthday

当您将现有的 id 分配给您的BGM时,它就会成为全局BGM替换。例如,将 56 分配给歌曲元数据 Adventure-YOASOBI.json,游戏中的BGM 056 orc01 将会被 Adventure-YOASOBI 替换。这就是为什么您希望您的新BGM(非替换音乐)使用唯一的 id,否则下一个具有相同 id 的BGM将替换您的音乐。

056 orc01 是标题菜单的BGM。

添加播放列表

您的播放列表文件放置在 Sound/BGM/Playlist 子文件夹,它们是格式简单的JSON文件。

json
{
    "shuffle": true,
    "list": [
        "megalovania"
    ],
    "remove": [
        "024 PSML514",
        "023 mysterious-forest"
    ]
}

list 中的音频ID(不是BGM ID)将合并到播放列表中,而 remove 将从播放列表中移除条目(如果存在)。您也可以使用现有的游戏音频ID。shuffle 设置该列表是否随机排列。

您也可以在 listremove 列表中使用通配符,目前提供两种模式:

json
"remove": [
	"**"
]

会在合并前清空所有曲目。

json
"remove": [
	"<dir>/*"
]

会在合并前清空所有来自 Sound/BGM/<dir>/ 文件夹的曲目。

播放列表类型

播放列表的JSON文件名应与以下之一匹配:

  • "Global"
  • 一个现有的播放列表名称
  • 一个区域类型名称

这里是游戏内已有的播放列表:

播放列表
  • Battle [1]
    • 054 The House of Leaves
  • Blank [4]
    • 041 earlgrey
    • 090 hirusagari
    • 044 heya_guitar 1
    • 043 Along-the-riverside-road
  • Day [1]
    • 004 hoshinokiseki
  • Dungeon [4]
    • 024 PSML514
    • 022 Pyramid-naibu
    • 023 mysterious-forest
    • 048 nazoooki shinden
  • Dungeon2 [6]
    • 072 Netherworld_Shanty
    • 077 dragon and toast
    • 078 legend of one
    • 079 koudou
    • 080 big mojo
    • 081 exotics
  • Dungeon_Boss [1]
    • 098 Pixel Myth
  • EloMap [3]
    • 006 elomap2
    • 007 elomap3
    • 059 tyris4
  • Festival_Noyel [1]
    • 051 yuki
  • Festival_Olvina [1]
    • 051 yuki
  • Festival_Yowyn [1]
    • 093 cat life
  • Field [1]
    • 015 Atlantean_Twilight256
  • Hoard [1]
    • 053 hoard
  • Lot [1]
    • 061 hyousetsu
  • Night [2]
    • 005 elomap1
    • 004 hoshinokiseki
  • Underground [2]
    • 046 dwarf
    • 047 nonbiri dwarf

Blank 是所有没有明确指定播放列表的区域的默认播放列表。

查看区域类型名称及其播放列表:

全局覆盖

您可以准备一个名为 Global 的特殊播放列表,它会合并到所有播放列表中。

指定播放列表

例如,所有地城区域(Zone_RandomDungeonZone_RandomDungeonFactoryZone_Mine 等)共享一个名为 Dungeon 的播放列表。如果您想添加/删除此播放列表中的歌曲,您应该在 Sound/BGM/Playlist/ 文件夹中准备一个 Dungeon.json

您在 Dungeon.json 中的更改将合并到游戏的 Dungeon 播放列表中,无论是添加还是删除歌曲。这将影响所有共享此播放列表的区域。

另一个常见用例是在您处于大地图时添加歌曲。大地图是区域类型 Region,它有一个播放列表 EloMap

区域覆盖

除了播放列表合并,您还可以为每个区域类型指定区域覆盖。这些播放列表将使用区域类型名称,其内容将合并到区域的默认播放列表中(如果在表中未指定,则为 Blank)。

因此,您也可以通过 Region.json 而不是 EloMap.json 向大地图播放列表添加歌曲。

合并顺序

三种播放列表可以同时存在,它们会依次按照全局覆盖,指定播放列表,区域覆盖的顺序合并。重复的曲目会被移除。播放列表合并顺序也受Mod加载顺序影响。在 remove 列表中使用通配符时请在牢记播放列表的合并顺序也会影响你的曲目。

热加载/BGM 查看

您可以在游戏内加载存档后,使用 CWL 面板查看和控制当前播放列表:

当您在游戏运行时编辑播放列表 JSON 后,您可以热重载所有播放列表。尽管 CWL 有用于热重载新增音频的控制台命令,但由于可能出现索引问题,不建议使用。

最后一个示例

假设您想移除大地图探索的所有默认曲目,并添加您的新增曲目,使用 Sound/BGM/Playlist/EloMap.jsonSound/BGM/Playlist/Region.json:

json
{
    "shuffle": true,
    "list": [
        "my new BGM sound id1",
        "my new BGM sound id2"
    ],
    "remove": [
        "**"
    ]
}