繁体   English   中英

当场景重新加载时音乐不会停止

[英]Music is not getting stop when scene reload in unity

我正在使用切换按钮播放和停止音乐,并且正在使用playerPrefs保存状态。 切换按钮正在播放或停止音乐,但是当我重新加载场景时,它变得混乱了。 即使打开切换按钮,音乐仍会继续播放(意味着将音乐设置为关闭)。

对于玩家偏好。 我正在使用Player prefs Manager脚本:

public static void SetMusicOnOFF(int value)
{
    PlayerPrefs.SetInt(Music, value);      
}

public static int GetMusicOnOff()
{
    return PlayerPrefs.GetInt(Music, 5);
}

对于切换按钮,我正在使用:

class MusicToggleButton : MonoBehaviour
{
    Toggle t;
    // Use this for initialization
    void Start ()
    {
        t = GetComponent<Toggle>();

        if (PlayerPrefsManager.GetMusicOnOff() == 1)
        { //ERROR CALLING THE METHOD TO CHANGE MUSIC TO ON
            t.isOn = true;
        }          
    }

当按下切换按钮时,我正在调用StartStopMusicPlayer方法:

class MusicPlayer : MonoBehaviour
{
    public static bool stopPlayer;

    // Use this for initialization
    void Awake ()
    {
        if (PlayerPrefsManager.GetMusicOnOff() == 2)
        {  
            audioSource.Play();
            audioSource.playOnAwake = true;
            audioSource.loop = true;
        }
        else
        {
            audioSource.Stop();
        }
    }

    public void StartStopMusicPlayer()
    {
        stopPlayer = !stopPlayer;
        if (stopPlayer)
        {
            PlayerPrefsManager.SetMusicOnOFF(1);
            audioSource.Stop();
        }
        else
        {
            PlayerPrefsManager.SetMusicOnOFF(2);
            audioSource.Play();
        }
    } 
}

音乐播放器类在重新加载时不会销毁。 但是MusicToggleButton类在重新加载时被破坏。 谢谢您的帮助。

仅仅调用PlayerPrefs.SetInt(Music,value)是不够的。 之后,您应该调用PlayerPrefs.Save()。 否则您的更改将在重启后生效。

public static void SetMusicOnOFF(int value)
{
    PlayerPrefs.SetInt(Music, value);
    PlayerPrefs.Save();
}

解决方法是如此简单。 如果有人想知道。 只需将切换按钮更改为普通按钮即可。 和在MusicToggleButton类中。

public class MusicToggleButton : MonoBehaviour
{
    public Image offOnImage;
    public bool changeValue;
    public Color TargetColor;
    public Color originalColor;
    // Use this for initialization
    void Start ()
    {
        changeValue = !(PlayerPrefsManager.GetMusicOnOff() == 1);
        if (PlayerPrefsManager.GetMusicOnOff() == 1)
        {
            Debug.Log("stop Music");
            offOnImage.color = TargetColor;
        }
        else
        {
            Debug.Log("Playing Music");
            offOnImage.color = originalColor;
        }
    }

    public void musicButtonClick()
    {
        changeValue = !changeValue;
        if (changeValue)
        {
            //Debug.Log("changing to target color");
            //offOnImage.CrossFadeColor(TargetColor, 0.5f, false, false);
            offOnImage.color = originalColor;
            Debug.Log("Playing");
        }
        else
        {
            //Debug.Log("changing to original color");
            //offOnImage.CrossFadeColor(Color.white, 0.5f, false, false);
            Debug.Log("pause");
            offOnImage.color = TargetColor;
        }
    }
}

这将播放和暂停音乐。 就像切换按钮一样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM