Если вы просто хотите отключить звук , вы можете попытаться изменить AuidoListener.volume
на объекте основной камеры, чтобы он просто не выводил звук, который он улавливает в вашей сцене.
Вам даже не нужно иметь ссылку на компонент AudioListener, потому что AudioListener.volume
является статическим свойством этого класса. Чтобы отключить / отключить звук, вам нужно просто обратиться к самому имени класса и сделать что-то вроде этого:
public void MuteAllSound()
{
AudioListener.volume = 0;
}
public void UnMuteAllSound()
{
AudioListener.volume = 1;
}
Для получения дополнительной информации, пожалуйста, ознакомьтесь с документацией Unity относительно компонента AudioListener.
Документация AudioListener Unity
В качестве альтернативы вы можете попробовать отключить все аудиоисточники, установив AudioSource.volume = 0
, и включить их, установив = 1
.
Но, как отметил @derHugo, это не будет хорошей идеей, так как это больше усилий / меньше эффективности , и в этом конкретном случае было бы проще просто полностью отключить компонент AudioListener.
Если вы хотите отключить только определенный набор звуков и не все из них, это будет жизнеспособной альтернативой. Конечно, вам нужно будет сохранить громкость источника, прежде чем он будет отключен, чтобы повторно применить его позже, и вам потребуется прямая ссылка на все эти аудиоисточники.
Вы можете сделать это примерно так:
//Save the volume value and set it to 0 after
public Dictionary<AudioSource,float> MuteSourcesAndSaveVolumes(List<AudioSource> sourcesToMute)
{
var sourcesAndVolumes = new Dictionary<AudioSource, float>();
foreach (var source in sourcesToMute)
{
sourcesAndVolumes.Add(source, source.volume);
source.volume = 0;
}
return sourcesAndVolumes;
}
//Re-apply your saved volumes
public void UnMuteAllSources(Dictionary<AudioSource,float> sourcesAndVolumes)
{
foreach(var x in sourcesAndVolumes)
{
x.Key.volume = x.Value;
}
}
Конечно, вы всегда можете проверить документы Unity относительно компонента AudioSource здесь:
Документация AudioSource Unity
Надеюсь, это поможет!
// Редактировать: я переключил решения, чтобы сначала представить лучшее решение, и добавил несколько примеров кода.