DontDestroyOnLoad через сцены для аудио - PullRequest
0 голосов
/ 02 июня 2019

Я не могу изменить громкость музыки более 1 раза. Регулятор громкости находится на сцене «Настройки», поэтому, когда я перехожу на эту сцену, я могу изменить громкость звука игры, но когда я выхожу из сцены и возвращаюсь, я не могу. Я предполагаю, что это происходит из-за моего плохого использования DontDestroyOnLoad. Как только я меняю громкость, включается DontDestroyOnLoad, поэтому громкость не меняется, когда вы выходите из сцены, но когда вы возвращаетесь в Настройки, чтобы изменить его обратно, это не работает из-за DontDestroyOnLoad. Как я могу решить это, чтобы я мог изменить это, где я хочу?

public class soundCont : MonoBehaviour {


    private static float musicVolume = 1f;

    private static float SetVolumeFX = 1f;
    private void Start()
    {
        musicVolume = Musicafondo.instance.musicSource.volume;
    }

    void Update ()
    {    
        MusicBack.instance.musicSource.volume = musicVolume;
        MusicBack.instance.efxSource.volume = SetVolumeFX;
        MusicBack.instance.efxSourceEnemy.volume = SetVolumeFX;
        DontDestroyOnLoad(this.gameObject);           
    }    

    public void SetVolume(float vol)
    {
        musicVolume = vol;
    }

    public void SetVolumeFx(float vol2)
    {
        SetVolumeFX = vol2;
    }
}

1 Ответ

0 голосов
/ 02 июня 2019

Оба экземпляра, которые вы используете для томов, не разрушаются при загрузке, поэтому вам не нужно сохранять последние значения тома в поле.

Этот код решит вашу проблему:

private void Start()
{
    DontDestroyOnLoad(this.gameObject);
    MusicBack.instance.musicSource.volume = 1f;
    MusicBack.instance.efxSource.volume   = MusicBack.instance.efxSourceEnemy.volume = 1f;
}

public void SetVolume(float vol) { MusicBack.instance.musicSource.volume = 1f; }

public void SetVolumeFx(float vol2)
{
    MusicBack.instance.efxSource.volume = MusicBack.instance.efxSourceEnemy.volume = vol2;
}

SetVolume изменит громкость музыки, а SetVolumeFx изменит громкость звуковых эффектов.

Убедитесь также, что SetVolume и SetVolumeFx вызваны правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...