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