初学者请教 全局 音效开关。最好是有代码

想做一个 全局音效开关的功能,
但是stopall 进入另一个页面还是会有声音
所以请教一下 该怎么弄,或者有没有代码 供参考一下

播放声音代码是你自己调用的,所以你封装个入口,自己弄个全局变量控制一下就可以了

写个声音管理器,背景音乐、音效,都可以自己操控,静音、音量自己说了算

我在一个scene引入了工具类,全局变量每次进入scene 都会重新初始化,请问怎么搞啊

有例子吗,我这scene每次进入都初始化,导致不生效

存一下不就行了?

class audioMgr {
    xxxxxxx
}

export default AudioMgr = new audioMgr

导出为全局单例

那你挂个常驻节点。

可以给个 可以跑起来的git代码吗,我还是不会 :sob:

我现在的代码
这样是不可以的,每次重新进入界面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数据

好吧,看来只能存本地了

谢谢了!!