1、主场景节点
onEnable(){
AudioManager.inst.stop();
AudioManager.inst.playMusic(loading.Main_music,true);
}
onDisable(){
AudioManager.inst.stop();
AudioManager.inst.playMusic(loading.Battle_music,true);
}
2、这是音频控制脚本
@ccclass(‘AudioManager’)
export class AudioManager extends Component {
private static _inst: AudioManager;
private _audioSource: AudioSource;
public static get inst(): AudioManager {
if (this._inst == null) {
this._inst = new AudioManager();
}
return this._inst;
}
constructor() {
super();
let audioMgr = new Node();
audioMgr.name = '__audioMgr__';
this._audioSource = audioMgr.addComponent(AudioSource);
console.log("创建一个新音频节点")
}
public get audioSource() {
return this._audioSource;
}
playSound (name:string) {
if(game_ready.MusicOpen== true){
const audioSource = this._audioSource;
assert(audioSource, 'AudioManager not inited!');
let path = 'sound/';
resources.load(path + name, AudioClip, (err, clip)=> {
if (err) {
warn('load audioClip failed: ', err);
return;
}
audioSource.playOneShot(clip, 1);
});
}
}
playMusic (clip:AudioClip,loop: boolean) {
if(game_ready.MusicOpen== true){
const audioSource = this._audioSource;
assert(audioSource, 'AudioManager not inited!');
audioSource.loop = loop;
audioSource.clip = clip;
if (!audioSource.playing) {
audioSource.play();
}
}
}
stop() {
const audioSource = this._audioSource;
assert(audioSource, 'AudioManager not inited!');
if(audioSource.playing){
audioSource.stop();
}
}
}
以上代码逻辑:主场景节点激活时播放Main_music,主场景节点false时先停止播放,再把音效资源替换成Battle_music。这在网页端测试的时候好使,但在微信开发者工具当中主场景节点false时只停止了播放,但没有再播放替换后的音乐。