Игнорирование StopAllAudio () в Unity3D - PullRequest
0 голосов
/ 08 апреля 2019

Есть AudioSource с фоновой музыкой. После определенного действия StopAllAudio активируется. Хочу чтобы фоновая музыка не выключалась, как это сделать?

Ответы [ 2 ]

1 голос
/ 08 апреля 2019

Я просто угадаю в темноте, что вы используете StopAllAudio из этой темы как

private AudioSource[] allAudioSources;

private void Awake() 
{
    allAudioSources = FindObjectsOfType<AudioSource>();
}

public void StopAllAudio() 
{
    foreach(var audioSource in allAudioSources) 
    {
        audioSource.Stop();
    }
}

Таким образом, если вы хотите исключить определенную (или множественную) AudioSource из-за остановки, вы можете использовать

// configure this in the Inspector
// set the size and reference according AudioSource(s)
// e.g. your background music source
public List<AudioSource> doNotStopSources = new List<AudioSource>();

private AudioSource[] allAudioSources;

privtae void Awake() 
{
    allAudioSources = FindObjectsOfType<AudioSource>();
}

public void StopAllAudio() 
{
    foreach(var audioSource in allAudioSources) 
    {
        // ignore AudiioSource if it is in doNotStopSources
        if(doNotStopSources.Contains(audioSource)) continue;

        audioSource.Stop();
    }
}
0 голосов
/ 08 апреля 2019

Почему бы не использовать встроенный в единство аудиомиксер? У вас могут быть уровни для «групп», которые вы создаете, которые вы затем назначаете различным источникам звука, это позволяет вам отключать звук, изменять громкость, добавлять эффекты и т. Д. Для определенных групп. Такие как «окружение», «заклинания», «разговор NPC», «музыка»

Для документов от единства см .: https://docs.unity3d.com/Manual/AudioMixer.html

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