Я создал код, связанный с холстом, сам код управляет двумя кнопками, которые переключаются между собой при нажатии, позволяя проигрывателю включать и выключать музыку. Когда я делаю сборку, звук всегда отключается, и я не могу понять почему (кнопки работают нормально). Также, чтобы заявить, что я использую Playerprefs для сохранения настроек, во всех моих сценах используется один и тот же код. Я хочу только принудительно запустить звук и активировать кнопку для первой сцены (Start Scene).
public AudioSource backgroundmusic;
public string sound;
public GameObject SoundOnButton, SoundOffButton;
public bool muted;
void Start ()
{
backgroundmusic.Play();
SoundCheck();
if (sound == "enabled")
{
SoundOffButton.SetActive(false);
SoundOnButton.SetActive(true);
}
if (sound == "muted")
{
SoundOffButton.SetActive(true);
SoundOnButton.SetActive(false);
}
}
private void Update()
{
}
public void SoundOFF()
{
SoundOffButton.SetActive(false);
SoundOnButton.SetActive(true);
muted = false;
PlayerPrefs.SetString("Sound", "enabled");
SoundCheck();
}
public void SoundON()
{
SoundOffButton.SetActive(true);
SoundOnButton.SetActive(false);
muted = true;
PlayerPrefs.SetString("Button", "used");
PlayerPrefs.SetString("Sound", "muted");
SoundCheck();
}
public void SoundCheck()
{
sound = PlayerPrefs.GetString("Sound");
if (sound == "enabled")
{
muted = false;
backgroundmusic.Stop();
}
if (sound == "muted")
{
muted = true;
backgroundmusic.Play();
}
}
Я тестировал различные вещи, чтобы заставить звук работать, поэтому на данный момент я действительно не уверен





Мои первые вопросы: работает ли он в вашем редакторе? Мне это было непонятно.
Некоторые моменты, которые я хотел бы отметить по этому поводу: Убедитесь, что к вашему источнику звука прикреплен AudioClip. Убедитесь, что громкость имеет такое значение, которое вы действительно можете услышать. Убедитесь, что GameObject или родительские GameObject, содержащие AudioSource, не отключены в любое время. Убедитесь, что вашему проекту действительно разрешено воспроизводить звук (аудиомикшер Windows или Mac).
Нет, если ничего из этого не сработает. Начну отладку.
Сначала отключите скрипт, который вы используете для запуска и приостановки музыки, перейдите в свой AudioSource и выберите «Play on Awake», это должно заставить вашу фоновую музыку запускаться вместе с игрой, если это не так, теперь у вас будет другой проблема.
Если он все же играет с игрой, то сделайте простой скрипт.
IEnumerator Start ()
{
bool control;
while (true)
{
control = !control;
yield return new WaitForSeconds (1f);
if (control)
backgroundmusic.Play ();
else
backgroundmusic.Stop ();
}
}
Вместо Play () и Stop () вы также можете использовать:
GetComponent <AudioSource> ().volume = 0; and GetComponent <AudioSource> ().volume = 1;
Попробуйте любое из этих решений и дайте мне знать.
Я пробовал то, что вы упомянули, и не работал так, как мне нужно.
Я нашел ответ, который искал, я кое-что изменил, и теперь он работает. Вот код.
public AudioSource backgroundmusic;
public string sound;
public GameObject SoundOnButton, SoundOffButton, Canvas;
public bool muted, notloaded = false;
void Start()
{
SoundCheck();
if (notloaded == false)
{
if (Canvas == true)
{
SoundON();
notloaded = true;
}
}
}
public void SoundOFF()
{
muted = false;
PlayerPrefs.SetString("Sound", "enabled");
SoundCheck();
}
public void SoundON()
{
muted = true;
PlayerPrefs.SetString("Sound", "muted");
SoundCheck();
}
public void SoundCheck()
{
sound = PlayerPrefs.GetString("Sound");
if (sound == "enabled")
{
muted = false;
SoundOffButton.SetActive(false);
SoundOnButton.SetActive(true);
backgroundmusic.Pause();
Debug.Log("Enabled");
}
if (sound == "muted")
{
muted = true;
SoundOffButton.SetActive(true);
SoundOnButton.SetActive(false);
backgroundmusic.Play();
Debug.Log("Muted");
}
}
}
С первого взгляда я вижу в вашем коде странную вещь: if (sound == "enabled") {backgroundmusic.Stop (); } это правильно?