添加音频
https://github.com/BAKAOLC/STS2-RitsuLib/blob/main/Docs/zh/FmodAndAudio.md
方法一:使用fmod加载bank
使用塔2使用的fmod工具进行加载。一些通过event加载的音频(比如角色选择等)通过bank方式加载会方便一些不用修改代码。
下载fmod
前往官网 https://www.fmod.com/download#fmodstudio ,下载2.03.06版本的fmod studio。

安装完毕后打开。
下载原版工程
先下载一个拥有原版音频guid对应的工程,可以下载ritsulib作者制作的音频示例工程(整个一起下载): https://github.com/BAKAOLC/STS2_FModProject_Minimal ,或者网盘: https://pan.baidu.com/s/1yuxPkDpCV8EVLkDubqiirg?pwd=apar 。
下载完毕后打开。
导入音频
点击左侧的Assets栏,将你的音频拖入其中或者右键Import Assets。

重命名bank
点击中间的Banks栏,将两个bank重命名为你的项目的名字,最好也是XXX和Master。
XXX最好删除重建一个,但是Master不能删除然后重建。

新建event
点击左侧的Events栏,可以右键新建文件夹,套一些文件夹改名防止你和别人的id撞上。然后右键新建event。

右键你的 event,点击 Assign To Bank,选择 Test 或者你重命名的那个。(不是 Master 那个)

接着点击Window - Mixer Routing,需要创建和原版一致的routing,这里是master/sfx,然后把你的音频放在此处。
例如原版游戏代码中的路径为event:/sfx/heal、event:/music/act3_a1_v1之类,那么你就需要分别放在master/sfx和master/music组下。
这一步会让你的音频受到游戏的音量与效果影响,例如sfx受到音响音量影响music受到音乐音量影响。

新建sheet
然后点击你刚才的event,中间会出现sheet界面。在其中右键新建一个任意类型的sheet。
- 简单来说,timeline可以实现音频拼接或者延迟触发,action可以多个音频随机触发一个(右键add multi instrument)等,parameter可以调整音频的参数等。

例如我们新建一个timeline sheet,然后点击assets将音频素材拖到轨道里。

构建
点击菜单栏的
File,点击Build,然后再点击Export GUIDs。从你保存的项目的根目录找到
Build这个文件夹,复制GUIDs.txt和Desktop/Test.bank(或者你的命名的bank,不是任何其他带有Master的bank)到你的mod项目中,例如复制到Test/audios里。你也可以设置自动构建的路径,点击
Edit - Preference - Build选择构建路径。

导出预设
Godot 里通常不会直接导入.bank和GUIDs.txt,这可能会导致打包的 .pck 文件中缺失这些文件,导致游戏运行时无法加载这些音频。
请确保你的导出设置里 “资源” 选项卡中 “筛选导出非资源文件或文件夹” 中包含了.bank和GUIDs.txt(或其他任何你需要的文件)。

代码加载
在你的初始化函数中加载:
1 | |
然后你指定的fmod就被加载到游戏里了。例如使用:
- 人物音频:
1 | |
- 卡牌音效:
1 | |
和
1 | |
方法二:使用fmod加载音频文件(wav, ogg, mp3)
如果你想自由播放音频,可以通过这种形式。
准备工作
- 由于fmod只能加载 未经godot处理过的音频 ,有三种方式(选一种即可),推荐第方法1和2:
安装fmod插件 6.1.0-4.5.0,点击
addons.zip下载(或者网盘 https://pan.baidu.com/s/1yuxPkDpCV8EVLkDubqiirg?pwd=apar ),把解压出来的addons复制到你的项目里,然后在编辑器菜单点击项目 - 项目设置 - 插件启用它。禁用对你需要通过fmod加载的音频的导入,原样导出。如下操作。

- 把音频复制到和你mod同级目录内加载。
导入资源
如果你是方法1和2,把你的音频文件放到你喜欢的位置,例如Test/audios/test.ogg。
如果你是方法3,把音频复制到和你mod同级目录内。
加载并播放
(可选)首先找个地方预载你的音频,例如你的初始化函数Entry.Init里:
1 | |
在你需要播放音频的地方播放:
1 | |