Привет, я много разбираюсь в этой проблеме, но не смог найти лучшего решения моей проблемы.Как использовать кнопку «Отключить звук»/«Включить звук»?
Так что проблема в том, что моя фоновая музыка начинает играть. У меня есть две кнопки. «Вкл» и «Выкл.». Я хочу отключить музыку, поэтому, когда я нажимаю кнопку отключения звука, она от «Вкл.» Переходит в «Выкл.» И музыка останавливается. Но когда я меняю сцену и возвращаюсь, она возвращается к кнопке с текстом «Вкл», но музыка все еще остановлена. Итак, мой вопрос заключается только в том, как сохранить измененную кнопку без возврата по умолчанию? Вот мой сценарий:
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;
}
}
}
Возможно, это не связано с проблемой, но похоже, что у вас есть большая проблема с вашими операторами if: многострочный код, который вы хотите выполнить в инструкции if, должен быть заключен в фигурные скобки - в противном случае, только первая строка после оператора if будет условно выполнена. Например, в 'Off()', единственная строка, которая будет выполнена условно, будет 'on.gameObject.SetActive (false);'. Остальные строки будут выполняться каждый раз при вызове метода, независимо от того, что. Я рекомендую вам привыкнуть писать фигурные скобки с каждым выражением, которое вы пишете. – Serlite
О да, я знал это. Это не работает, когда я помещаю фигурные скобки на весь код в функции. Теперь я должен был случайно удалить их при написании этого сообщения. Но спасибо за внимание :). Теперь я исправлю его для будущих читателей. –
Похож на дубликат. Пожалуйста, посмотрите [здесь] (http://stackoverflow.com/a/41073496/3785314) – Programmer