音频系统 - dasasdhba/Super-Mario-Vandal-Editor GitHub Wiki

本章介绍如何在本项目中添加音频,使用音频,以及使用加密系统。

添加音频文件

本项目使用的音频引擎为 FMOD,该系统支持的音频格式都可以添加,不过建议使用 ogg 格式。

添加音效与使用

  1. 添加文件: 将需要添加的音效文件复制到 .\Data\Sound\ 目录下,并将其扩展名修改为global.audioext(默认为 "fmod")
  2. 更新音频验证列表:debug 模式运行一次游戏即可,若不更新音频验证列表,会触发防修改机制。
  3. 假设你新增的音效文件为 "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:通道编号,默认为 0
  • volume:音量(相对游戏设置),默认为 1
  • loop_start:循环起点,小于 0 时不工作
  • loop_end:循环终点,小于等于 loop_start 时不工作

使用音频加密

警告:请在加密前备份你的音频文件,否则可能会给你带来损失。 音频加密工作应该在开发的最后完成,否则会给你带来不必要的麻烦。 下面的说明以加密音效为例,加密音乐的步骤完全一致:

  1. 将对象 o_mainCreate 事件中的 global.soundencrypt 设为 true
  2. debug 模式运行一次游戏。

如果你需要还原已加密的音效,使用以下步骤:

  1. 将对象 o_mainCreate 事件中的 global.soundencrypt 设为 false
  2. debug 模式运行一次游戏。

注意,加密音效会增加游戏的启动时间,加密音乐会增加音乐的载入时间。 因为音效是在游戏启动时全部载入内存,而音乐则是调用时载入。