音樂音效
接下來,我們來給游戲添加背景音樂和音效。
首先我們要知道的是,Quick 引擎封裝了一套與聲音相關的 audio 模塊,我們可以通過它方便的調用聲音相關的 API 來控制聲音。audio 模塊提供了眾多的方法和屬性,比如預加載、播放、暫停、停止、恢復聲音等等。
我們還需知道,游戲中的聲音背引擎分為了兩種:一種是Music(指背景音樂),另一種則是Sound(指游戲音效,也就是除了背景音樂以外的聲音)。
下面是一些控制背景音樂相關的常用 API:
-
預載入一個音樂文件:audio.preloadMusic(filename)
它在播放音樂前預先載入,可以在需要播放音樂時無延遲立即播放。不過限於硬件設備和操作系統的限制,通常只能預載入一個音樂文件,參數為音樂文件名。 -
播放音樂:audio.playMusic(filename, isLoop),參數分別表示音樂文件名,以及是否循環播放音樂,默認情況下為 true。
如果音樂文件尚未載入,則會首先載入音樂文件,然后開始播放。
注意:即便音樂音量為 0.0,audio.playMusic() 仍然會進行播放操作。
如果希望停止音樂來降低 CPU 占用,應該使用 audio.stopMusic() 接口完全停止音樂播放。 -
暫停音樂的播放:audio.pauseMusic()
-
恢復暫停的音樂:audio.resumeMusic()
-
停止播放音樂:audio.stopMusic(isReleaseData),參數 isReleaseData 表示是否釋放音樂數據,默認為 true。
-
設置音樂的音量:audio.setMusicVolume(volume)
volume 音量在 0.0 到 1.0 之間, 0.0 表示完全靜音,1.0 表示 100% 音量。 -
返回音樂的音量值:audio.getMusicVolume()
返回值在 0.0 到 1.0 之間,0.0 表示完全靜音,1.0 表示 100% 音量
控制音效相關的 API 與控制背景音樂的類似,如audio.playSound(filename, isLoop),audio.setSoundsVolume(volume)等,所以這里我們就不再列舉了。
回到我們的游戲,因為它的音樂音效不需要過多的設置和變化,所以,我們用不超過二十行的代碼就可以實現整個聲音系統的制作。如下:
首先,在 res 文件夾下新建一個 sound 文件夾,把需要的聲音文件都放到這個文件夾中。然后在 MyApp.lua 文件中,我們先預加載需要的音樂音效。
1 audio.preloadMusic("sound/background.mp3") 2 audio.preloadSound("sound/button.wav") 3 audio.preloadSound("sound/ground.mp3") 4 audio.preloadSound("sound/heart.mp3") 5 audio.preloadSound("sound/hit.mp3")
接着,我們就可以在 MainScene 場景中播放背景音樂了。
1 audio.playMusic("sound/background.mp3", true)
另外,在需要播放音效的地方添加類似下面的函數就可以播放音效。
1 audio.playSound("sound/button.wav")