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)