音频系统 - dasasdhba/Super-Mario-Vandal-Editor GitHub Wiki
本章介绍如何在本项目中添加音频,使用音频,以及使用加密系统。
添加音频文件
本项目使用的音频引擎为 FMOD,该系统支持的音频格式都可以添加,不过建议使用 ogg 格式。
添加音效与使用
- 添加文件:
将需要添加的音效文件复制到 .\Data\Sound\ 目录下,并将其扩展名修改为
global.audioext(默认为 "fmod") - 更新音频验证列表: 以 debug 模式运行一次游戏即可,若不更新音频验证列表,会触发防修改机制。
- 假设你新增的音效文件为 "sound.fmod",使用代码
audio_sound_play("sound")来播放此音效。 如果你需要进一步的设置,参考audio_sound_play(sndstr,loop,volume): 其中loop为循环次数,默认为 0,设为 -1 使音频无限循环。 而volume为音量,取值范围是 0~1,默认值与游戏设置(global.sound)相关。 如果你需要在特定条件停止某个特定音效,使用下面的代码:
if snd_should_be_played() //仅作示范
snd = audio_sound_play("sound") //snd 应该是事先声明好的变量
if snd_should_be_stopped() //仅作示范
FMODInstanceStop(snd)
你也可以查阅 FMOD 系统的相关函数,它们可以用于做出非常多的效果。
添加音乐与使用
添加音乐的方式与音效类似,唯一的区别是你需要把文件放到 .\Data\Music\ 目录下。
但是音乐播放与通道系统相关,所以在播放音乐的同时你必须指定 channel,方法如下:
channel = 0 //使用 0 号通道
music = "-5-2" //使用 "-5-2" 音乐
//设置音乐播放
global.musicname[channel] = music
global.musicplay[channel] = audio_music_play(music,-1)
当然,你完全可以使用对象 o_music_default 以及 o_music 来播放音乐,在 Room 里面设置它们的 Creation Code 即可。 它们有如下参数:
music:音乐名channel:通道编号,默认为 0volume:音量(相对游戏设置),默认为 1loop_start:循环起点,小于 0 时不工作loop_end:循环终点,小于等于loop_start时不工作
使用音频加密
警告:请在加密前备份你的音频文件,否则可能会给你带来损失。 音频加密工作应该在开发的最后完成,否则会给你带来不必要的麻烦。 下面的说明以加密音效为例,加密音乐的步骤完全一致:
- 将对象 o_main 的 Create 事件中的
global.soundencrypt设为 true - 以 debug 模式运行一次游戏。
如果你需要还原已加密的音效,使用以下步骤:
- 将对象 o_main 的 Create 事件中的
global.soundencrypt设为 false - 以 debug 模式运行一次游戏。
注意,加密音效会增加游戏的启动时间,加密音乐会增加音乐的载入时间。 因为音效是在游戏启动时全部载入内存,而音乐则是调用时载入。