想做一个 全局音效开关的功能,
但是stopall 进入另一个页面还是会有声音
所以请教一下 该怎么弄,或者有没有代码 供参考一下
播放声音代码是你自己调用的,所以你封装个入口,自己弄个全局变量控制一下就可以了
写个声音管理器,背景音乐、音效,都可以自己操控,静音、音量自己说了算
我在一个scene引入了工具类,全局变量每次进入scene 都会重新初始化,请问怎么搞啊
有例子吗,我这scene每次进入都初始化,导致不生效
存一下不就行了?
class audioMgr {
xxxxxxx
}
export default AudioMgr = new audioMgr
导出为全局单例
那你挂个常驻节点。
可以给个 可以跑起来的git代码吗,我还是不会 
我现在的代码
这样是不可以的,每次重新进入界面enabled就会为true
const {ccclass, property} = cc._decorator;
@ccclass
export default class AudioManager extends cc.Component{
sound_path:string = 'Sound/';
sounds:{[key:number]:any} = {};
enabled:boolean = true;
music:string = '';
private static __instance: AudioManager;
public static get Instance() {
if (null == this.__instance) {
this.__instance = new AudioManager();
}
return this.__instance;
}
addSound(key:string, clip:cc.AudioClip)
{
this.sounds[key] = clip;
}
playFx(fxName:string)
{
if(!this.enabled) return;
cc.audioEngine.playEffect(this.sounds[fxName], false);
}
playMusic(musicName:string)
{
console.log('音乐开关',this.enabled)
this.music = musicName;
if(!this.enabled) return;
cc.audioEngine.playMusic(this.sounds[musicName], true);
}
stopMusic()
{
cc.audioEngine.stopMusic();
}
setEnabled(enabled:boolean)
{
console.log("关闭音乐")
this.enabled = enabled;
if(this.enabled)
{
this.playMusic(this.music);
}
else
{
cc.audioEngine.stopAll();
}
}
getEnable()
{
return this.enabled;
}
}
麻烦看一下我的代码有问题吗
不要把脚本拖到编辑器中,直接用静态调取方法
现在的是scene中 挂了一个 ts脚本,然后ts 脚本引入的这个manager。这样是不行的
你得让这个管理类变成单例,或者变成常驻节点的挂载脚本
在本地存一个enabled数据
好吧,看来只能存本地了
谢谢了!!