Unity3d 切换音频对象仅存在于一个场景中,但在所有场景中从另一个场景打开/关闭播放

Unity3d 切换音频对象仅存在于一个场景中,但在所有场景中从另一个场景打开/关闭播放,unity3d,audio,background,toggle,Unity3d,Audio,Background,Toggle,我的“菜单”场景中有一个带有音频源的对象,并附加了一个脚本,以便在不重置的情况下在场景之间播放。我想使用“选项”场景中的按钮静音/取消静音音频,并在可能的情况下为每次启动应用程序保存此设置,以供后续步骤使用 我通过在对象上附加脚本使音频保持播放。下面是通过场景持续播放音乐的代码 public class dontStopAudio : MonoBehaviour { void Awake() { GameObject[] objs = GameObject.Fi

我的“菜单”场景中有一个带有音频源的对象,并附加了一个脚本,以便在不重置的情况下在场景之间播放。我想使用“选项”场景中的按钮静音/取消静音音频,并在可能的情况下为每次启动应用程序保存此设置,以供后续步骤使用

我通过在对象上附加脚本使音频保持播放。下面是通过场景持续播放音乐的代码

public class dontStopAudio : MonoBehaviour {

    void Awake()
    {
        GameObject[] objs = GameObject.FindGameObjectsWithTag("BGAudio");
        if (objs.Length > 1)
            Destroy(this.gameObject);

        DontDestroyOnLoad(this.gameObject);
    }

}
我试图创建一个脚本来打开和关闭背景音乐,并调用音乐游戏对象,以获得静音组件并更改其值,但似乎没有起作用。我还尝试创建一个控制函数,使用if和if-else比较音频源组件的mute属性值,但我无法以任何方式更改它

这就是我试图做到的,但我确信这是严重错误的。只是不知道是什么,因为我是unity的初学者,只是想通过一些小项目来扩展我的知识

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class toggleMusic : MonoBehaviour {

    public GameObject bgMusic;
    public AudioSource bgAudio;
    public GameObject toggleMusicButton;
    public Sprite soundON, soundOFF;


    public void bgMusicOnOff()
    {
        bgAudio = bgMusic.GetComponent<AudioSource>();
        if (bgAudio.mute = false) { 
            bgAudio.mute = true;
            toggleMusicButton.GetComponent<Image>().sprite = soundOFF;
        }
        else if (bgAudio.mute = true) { 
            bgAudio.mute = false;
            toggleMusicButton.GetComponent<Image>().sprite = soundOFF;
        }
    }
}
使用系统;
使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
使用UnityEngine.UI;
公共课堂切换音乐:单一行为{
公共游戏对象音乐;
公共音频源;
公共游戏对象切换音乐按钮;
公共精灵声开声关;
公共空间bgMusicOnOff()
{
bgAudio=bgMusic.GetComponent();
如果(bgAudio.mute=false){
bgAudio.mute=true;
toggleMusicButton.GetComponent().sprite=soundOFF;
}
如果(bgAudio.mute=true){
bgAudio.mute=false;
toggleMusicButton.GetComponent().sprite=soundOFF;
}
}
}
我还尝试在button的OnClick()面板上调用该方法,但似乎效果不佳

我希望能够使用按钮从“选项”场景中静音/取消静音音频(连接到对象的音频仅存在于“菜单”场景中,并使用我共享的脚本在所有场景中播放),在我成功完成后,我可能会继续保存用户每次启动应用程序时的设置

非常感谢你提前的时间,我知道有些事情我没有考虑,但是我没有看到什么因为我缺乏关于团结的知识/经验。 然后,您可以使用以下内容:

PlayerPrefs.SetInt("SoundOn", 1);

启动时


希望这能有所帮助。

为了帮助其他可能有同样问题的人,这绝对是解决方案。特别是,如果在另一个场景中进行了选择,则要让游戏记住玩家的选择(例如:在菜单场景中启动游戏,然后将其从选项场景中静音)你只需将你的音乐对象变成一个预置,并将其加载到选项屏幕上,同时将你为“选项屏幕上静音”设置的脚本作为游戏对象移动到菜单屏幕上。
if(PlayerPrefs.GetInt("SoundOn"))
{
//turn sound on
}
else
{
//turn sound off
}