问题背景
一般来说,每个场景都会有自己的背景音乐,所以,之前我一直没有注意到有什么问题。
直到有一天,我想让游戏从头到尾一直循环播放同一首背景音乐,结果,咦,背景音乐怎么自动停了?
原因
暂时还没有找到Cocos Creator对此的相关说法。
解决方法
Cocos Creator提供了两种方式来播放音乐音效:
Audio Source组件
使用Audio Source组件,可以直接在场景编辑器里对音乐的播放进行设置,这是很常用的一种方式。
但是,正是这种方式,导致场景切换时,音乐自动停止播放。
而且,这种中断不是因为Node被删除导致的,而是Cocos Creator内部的机制导致的。
cc.audioEngine
Cocos Creator还提供了另外一种非组件的方式来播放音乐,就是cc.audioEngine模块。
与Audio Source不同,cc.audioEngine只能通过脚本来调用,好处是可以获得更多的控制权,也就是不会被自动停止播放。
具体代码:
let audioId = cc.audioEngine.playMusic(this.clip, true);
cc.audioEngine.setVolume(audioId, 0.5);
参考