我正在使用切换按钮播放和停止音乐,并且正在使用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类在重新加载时被破坏。 谢谢您的帮助。
答案 0 :(得分:0)
仅调用PlayerPrefs.SetInt(Music,value)是不够的。之后,您应该调用PlayerPrefs.Save()。否则您的更改将在重启后生效。
public static void SetMusicOnOFF(int value)
{
PlayerPrefs.SetInt(Music, value);
PlayerPrefs.Save();
}
答案 1 :(得分:0)
解决方案是如此简单。如果有人想知道。只需将切换按钮更改为普通按钮即可。和在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;
}
}
}
这将播放和暂停音乐。就像切换按钮一样。