如何使用保存静音/取消静音按钮?

时间:2016-12-12 02:15:29

标签: android ios unity3d

您好我一直在研究这个问题,但我无法找到问题的最佳解决方案。

所以问题是我的背景音乐开始播放。我有两个按钮。" On"和"关"。我想把音乐静音,所以当我点击我的静音按钮时,它来自" On"去"关"然后当我改变场景并返回时它返回到带有文字" On"的按钮。但音乐仍然停止。 所以我的问题只是如何保存更改的按钮而不返回默认值? 这是我的剧本:

public GameObject on;
public GameObject off;
public string sound;

Soundtrack music;
static bool isMuted;


void Awake()
{
    SoundCheck();


}
void Start()
{
    music = FindObjectOfType<Soundtrack>();
}
public void Off()
{
    if (isMuted == false)
     {
    on.gameObject.SetActive(false);
    off.gameObject.SetActive(true);
    music.s.Stop();
    isMuted = true;
    PlayerPrefs.SetString("Sound", "muted");
     }
}
public void On()
{    if(isMuted==true)
   {
    on.gameObject.SetActive(true);
    off.gameObject.SetActive(false);
    music.s.Play();
    isMuted = false;
    PlayerPrefs.SetString("Sound", "enabled");
   }
}
public void SoundCheck()
{
    sound = PlayerPrefs.GetString("Sound");

    if (sound == "enabled")
    {
        isMuted = false;
    }
    else if (sound == "muted")
    {
        isMuted = true;
    }
}

}

2 个答案:

答案 0 :(得分:0)

很容易。首先,将string类型保存在您的PlayerPrefs而不是public void SoundCheck() { sound = PlayerPrefs.GetString("Sound"); if (sound == "enabled") { isMuted = false; } else if (sound == "muted") { isMuted = true; } on.gameObject.SetActive(isMuted); off.gameObject.SetActive(!isMuted); }中要好得多。 但要解决您的问题,您必须做的就是

{ "rules": { "events": { ".read": "root.child('admin').hasChild(auth.uid)", ".write": "root.child('admin').hasChild(auth.uid)", "$uid": { ".write": "$uid === auth.uid", ".read": "auth != null && auth.uid == $uid" } },

答案 1 :(得分:0)

您需要在启动功能中更改SoundCheck()调用而不是唤醒!

时,Start()会在您回到场景时调用,但不会唤醒。

顺便说一下:

  1. bool 是否应该保存播放器广告
  2. 想一个按钮并将精灵更改为Sprite On和Sprite Off可以更好。