Я просто догадаюсь в темноте, что вы используете 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();
}
}
Почему бы не использовать аудиомикшер, встроенный в единство? У вас могут быть уровни для «групп», которые вы создаете, которые вы затем назначаете различным источникам звука, это позволяет вам отключать звук, изменять громкость, добавлять эффекты и т. д. для определенных групп. Например, «окружающая среда», «заклинания», «разговоры NPC», «музыка».
Для документов из единства см.: https://docs.unity3d.com/Manual/AudioMixer.html