1 using System.Collections;
2 using System.Collections.Generic;
12 [Tooltip(
"The amount of Audio Sources that will exist in the GameObject where this component lives. If they are missing, they will be created during this component's Awake.")]
26 public AudioSource
PlayClip(AudioClip clip,
float volume = 1,
bool loop =
false,
float pitch = 1,
float delay = 0f, AudioMixerGroup audioMixerGroup =
null)
30 Debug.LogWarning(
"Trying to play a null clip",
this);
35 configuredAudioSource.PlayDelayed(delay);
36 return configuredAudioSource;
44 public List<AudioSource>
StopClip(AudioClip clipInAudioSource)
46 List<AudioSource> audioSourcesWithClip =
GetAudioSources(clipInAudioSource);
47 foreach (AudioSource audioSourceWithClip
in audioSourcesWithClip)
49 audioSourceWithClip.Stop();
52 return audioSourcesWithClip;
93 if (audioSource.clip == clipInAudioSource)
95 if (audioSource.isPlaying)
111 List<AudioSource> foundAudioSources =
new List<AudioSource>();
112 foreach (AudioSource audioSource
in this.audioSources)
114 if (audioSource.clip == clipInAudioSource)
116 if (audioSource.isPlaying)
117 foundAudioSources.Add(audioSource);
124 return foundAudioSources;
131 foreach (AudioSource audioSource
in GetComponents<AudioSource>())
134 audioSource.enabled =
true;
145 if (!audioSource.isPlaying)
156 AudioSource newAudioSource = gameObject.AddComponent<AudioSource>();
157 newAudioSource.playOnAwake =
false;
160 return newAudioSource;
163 private AudioSource
ConfigureAudioSource(AudioSource audioSource, AudioClip clip,
float volume = 1,
bool loop =
false,
float pitch = 1, AudioMixerGroup audioMixerGroup =
null)
165 audioSource.clip = clip;
166 audioSource.volume = volume;
167 audioSource.outputAudioMixerGroup = audioMixerGroup;
168 audioSource.pitch = pitch;
169 audioSource.loop = loop;
181 while (audioSource.volume > 0f)
183 audioSource.volume -= 0.1f;
184 yield
return new WaitForSeconds(0.12f);
188 audioSource.volume = 1.0f;
Component to manage multiple AudioSources (or AudioClips) at the same time (or in the same component)
static IEnumerator LowerVolumeAndStopSounds(AudioSource audioSource)
void FadeOutAudioSource(AudioSource audioSource)
List< AudioSource > GetAudioSources(AudioClip clipInAudioSource)
Returns all AudioSources that are playing the given clip.
List< AudioSource > audioSources
AudioSource GetAudioSource(int index)
Returns the AudioSource with the given index from the list of managed audio sources of this AudioSour...
AudioSource GetAudioSource(AudioClip clipInAudioSource)
Returns an AudioSource that is playing the given clip.
AudioSource GetFreeAudioSource()
AudioSource PlayClip(AudioClip clip, float volume=1, bool loop=false, float pitch=1, float delay=0f, AudioMixerGroup audioMixerGroup=null)
Plays the clip.
AudioSource AddAudioSource()
List< AudioSource > StopClip(AudioClip clipInAudioSource)
Stops playing the clip in all AudioSources related to this AudioSoundManager that are playing it.
int minimumQuantityOfExistingAudioSources
void StopAllClips(bool fadeOut=false)
Stops playing all clips i all AudioSources related to this AudioSourceManager.
AudioSource ConfigureAudioSource(AudioSource audioSource, AudioClip clip, float volume=1, bool loop=false, float pitch=1, AudioMixerGroup audioMixerGroup=null)