您好我一直在研究这个问题,但我无法找到问题的最佳解决方案。
所以问题是我的背景音乐开始播放。我有两个按钮。" 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;
}
}
}
答案 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()会在您回到场景时调用,但不会唤醒。顺便说一下: