public void StopSound(string name) { LoopedSound loopedSound = _loopedSounds.Find(sound => sound.Name == name); if (loopedSound != null) { loopedSound.Counter--; this.Log(string.Format("Decrement {0} {1}", loopedSound.Name, loopedSound.Counter)); if (loopedSound.Counter > 0) { return; } _loopedSounds.Remove(loopedSound); } FindAndStopAudioSource(name); }
public void PlaySound(string name, bool pausable = true, bool loop = false) { if (loop) { LoopedSound loopedSound = _loopedSounds.Find(sound => sound.Name == name); if (loopedSound != null) { loopedSound.Counter++; this.Log(string.Format("Increment {0} {1}", loopedSound.Name, loopedSound.Counter)); return; } else { _loopedSounds.Add(new LoopedSound(name)); this.Log(string.Format("Add {0} 1", name)); } } PlaySoundInternal(name, pausable, loop); }
public AudioSource PlaySound(SoundList sound, float timeToLoop = 0.0f) { //return null; AudioSource emitterAvailable = null; foreach (AudioSource emitter in emitters) { if (!emitter.isPlaying) { emitterAvailable = emitter; } } if (emitterAvailable != null) { emitterAvailable.loop = false; int index = 0; switch (sound) { case SoundList.WALK: index = Random.Range(0, listWalkSounds.Count); emitterAvailable.clip = listWalkSounds[index]; emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Walk")[0]; break; case SoundList.PUNCH: index = Random.Range(0, listPunchSounds.Count); emitterAvailable.clip = listPunchSounds[index]; emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Punch")[0]; break; case SoundList.IS_HIT: index = Random.Range(0, listHitSounds.Count); emitterAvailable.clip = listHitSounds[index]; emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Effects")[0]; break; case SoundList.HAND_MOVEMENT: emitterAvailable.clip = handMovementSoundClip; emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Effects")[0]; break; case SoundList.FLAG_BACK: emitterAvailable.clip = flagBackSoundClip; emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("LittleMusics")[0]; break; case SoundList.TAKE_FLAG: emitterAvailable.clip = takeFlagSoundClip; emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("LittleMusics")[0]; break; case SoundList.WIN_SOUND: emitterAvailable.clip = winSoundClip; emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("LittleMusics")[0]; break; case SoundList.LOSE_SOUND: emitterAvailable.clip = loseSoundClip; emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("LittleMusics")[0]; break; } if (timeToLoop > 0.0f) { emitterAvailable.loop = true; LoopedSound newLoopSound = new LoopedSound { audioSource = emitterAvailable, timeUntilStop = Utility.StartTimer(timeToLoop) }; loopedSoundList.Add(newLoopSound); } emitterAvailable.Play(); return(emitterAvailable); } else { Debug.Log("no emitter available"); return(null); } }
public void PlaySound(SoundList sound, AudioMixerGroup group, float timeToLoop = 0.0f, bool infiniteLoop = false) { AudioSource emitterAvailable = null; if (sound == SoundList.TRASH_IMPACT) { foreach (AudioSource emitter in trashEmitters) { if (!emitter.isPlaying) { emitterAvailable = emitter; } } if (emitterAvailable != null) { emitterAvailable.loop = false; emitterAvailable.clip = trashImpactClip[Random.Range(0, trashImpactClip.Length - 1)]; emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Environment")[0]; emitterAvailable.Play(); } return; } foreach (AudioSource emitter in emitters) { if (!emitter.isPlaying) { emitterAvailable = emitter; } } if (emitterAvailable != null) { emitterAvailable.loop = false; switch (sound) { case SoundList.RUN: emitterAvailable.clip = runClips[Random.Range(0, runClips.Length - 1)]; break; case SoundList.FIRE: emitterAvailable.clip = fireClip; break; case SoundList.WOOD_IMPACT: emitterAvailable.clip = woodImpactClip[Random.Range(0, woodImpactClip.Length - 1)]; break; case SoundList.STEEL_IMPACT: emitterAvailable.clip = steelImpactClip[Random.Range(0, steelImpactClip.Length - 1)]; break; case SoundList.CONVEYORBELT: emitterAvailable.clip = conveyorBeltclip; break; case SoundList.GENE_DAMAGE: emitterAvailable.clip = geneDamageClip; break; case SoundList.GENE_DESTROY: emitterAvailable.clip = geneDestroyClip; break; case SoundList.POWER_UP: emitterAvailable.clip = powerUpClip; break; case SoundList.PICK_UP: emitterAvailable.clip = pickupClip; break; case SoundList.WOOD_DESTROY: emitterAvailable.clip = woodDestroyClip; break; case SoundList.DEATH: emitterAvailable.clip = deathClips[Random.Range(0, deathClips.Length - 1)]; break; case SoundList.MENU_SELECTION: emitterAvailable.clip = menuSelection; break; case SoundList.MENU_VALIDATION: emitterAvailable.clip = menuValidation; break; case SoundList.WIN_MUSIC: musicEmitter.clip = winMusicClip; musicEmitter.Play(); break; case SoundList.LOSE_MUSIC: musicEmitter.clip = loseMusicClip; musicEmitter.Play(); break; } if (timeToLoop > 0.0f) { emitterAvailable.loop = true; if (!infiniteLoop) { LoopedSound newLoopSound = new LoopedSound { audioSource = emitterAvailable, timeUntilStop = Utilities.StartTimer(timeToLoop) }; loopedSoundList.Add(newLoopSound); } } switch (group) { case AudioMixerGroup.PLAYER: emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Player")[0]; break; case AudioMixerGroup.ENVIRONMENT: emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Environment")[0]; break; case AudioMixerGroup.CONSTANT_NOISE: emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("ConstantNoise")[0]; break; } emitterAvailable.Play(); } else { Debug.Log("no emitter available"); } }
public AudioSource PlaySound(SoundList sound, float volume = 1.0f, float timeToLoop = 0.0f) { //return null; AudioSource emitterAvailable = null; foreach (AudioSource emitter in emitters) { if (!emitter.isPlaying) { emitterAvailable = emitter; } } if (emitterAvailable != null) { emitterAvailable.loop = false; emitterAvailable.volume = volume; Debug.Log(sound.ToString()); switch (sound) { case SoundList.PAS: int indexWalk = Random.Range(0, listPasSounds.Count); emitterAvailable.clip = listPasSounds[indexWalk]; emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Marche")[0]; break; case SoundList.BUISSON: int indexBuisson = Random.Range(0, listBuissonSounds.Count); emitterAvailable.clip = listBuissonSounds[indexBuisson]; emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Buisson")[0]; break; case SoundList.LOUP_CRI: emitterAvailable.clip = loupCriClip; emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Cri")[0]; break; case SoundList.LOUP_GROGNEMENT: emitterAvailable.clip = loupGrognementClip; emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Grognement")[0]; break; case SoundList.CLIC: emitterAvailable.clip = clicClip; emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Clic")[0]; break; case SoundList.DIALOGUE: emitterAvailable.clip = dialogueClip; emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Dialogue")[0]; break; case SoundList.FEUILLAGE: int indexFeuillage = Random.Range(0, listFeuillageSounds.Count); emitterAvailable.clip = listFeuillageSounds[indexFeuillage]; emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Feuillage")[0]; break; case SoundList.GRAB: emitterAvailable.clip = grabClip; emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Ramasser")[0]; break; } if (timeToLoop > 0.0f) { emitterAvailable.loop = true; LoopedSound newLoopSound = new LoopedSound { audioSource = emitterAvailable, timeUntilStop = Utility.StartTimer(timeToLoop) }; loopedSoundList.Add(newLoopSound); } emitterAvailable.Play(); return(emitterAvailable); } else { return(null); } }
public AudioSource PlaySound(SoundList sound, float timeToLoop = 0.0f) { AudioSource emitterAvailable = null; foreach (AudioSource emitter in emitters) { if (!emitter.isPlaying) { emitterAvailable = emitter; } } if (emitterAvailable != null) { emitterAvailable.loop = false; Debug.Log(sound.ToString()); switch (sound) { case SoundList.WALK: int indexWalk = Random.Range(0, listWalkSounds.Count); emitterAvailable.clip = listWalkSounds[indexWalk]; emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Effects")[0]; break; case SoundList.CLOCK: emitterAvailable.clip = clockClip; emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Effects")[0]; break; case SoundList.DEATH: emitterAvailable.clip = deathClip; emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Effects")[0]; break; case SoundList.ITEM_PICKUP: emitterAvailable.clip = getItemClip; emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Effects")[0]; break; case SoundList.GUN_FIRE: emitterAvailable.clip = gunFireClip; emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Effects")[0]; break; case SoundList.DEMON_NOISE: int indexNoise = Random.Range(0, listDemonNoiseSounds.Count); emitterAvailable.clip = listDemonNoiseSounds[indexNoise]; emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Effects")[0]; break; case SoundList.DEMON_DEATH: emitterAvailable.clip = DemonDeath; emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Effects")[0]; break; case SoundList.NEKO_NOISE: emitterAvailable.clip = nekoNoiseClip; emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Effects")[0]; break; case SoundList.SPACE_NEKO_DEATH: emitterAvailable.clip = spaceNekoNoiseClip; emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Effects")[0]; break; case SoundList.STAIRS: emitterAvailable.clip = stairsClip; emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Effects")[0]; break; } if (timeToLoop > 0.0f) { emitterAvailable.loop = true; LoopedSound newLoopSound = new LoopedSound { audioSource = emitterAvailable, timeUntilStop = Utility.StartTimer(timeToLoop) }; loopedSoundList.Add(newLoopSound); } emitterAvailable.Play(); return(emitterAvailable); } else { Debug.Log("no emitter available"); return(null); } }