public SoundHandler PlayMusic(global::Utils.Sound.Sound sound) { if (sound == null) { return(null); } if (sound.Clip == null) { return(null); } if (MusicHandler != null) { MusicHandler.Source.clip = sound.Clip; //MusicHandler.Volume = clip.VolumeModifier; MusicHandler.Source.volume = sound.VolumeModifier; MusicHandler.IsLooped = sound.Loop; MusicHandler.Pitch = sound.Pitch; MusicHandler.Source.Play(); MusicHandler.MixerGroup = sound.MixerGroup; return(MusicHandler); } var handler = Play(sound); DontDestroyOnLoad(handler.Source.gameObject); MusicHandler = handler; return(handler); }
public SoundHandler Play(global::Utils.Sound.Sound sound) { if (sound == null) { return(null); } var isLimiting = sound.MixerGroup != null && LimitSettings != null; var isInGroup = false; var soundsInGroup = 0; if (isLimiting) { isInGroup = _groupCounter.ContainsKey(sound.MixerGroup); if (isInGroup) { soundsInGroup = _groupCounter[sound.MixerGroup]; if (soundsInGroup >= LimitSettings.GetLimit(sound.MixerGroup)) { //Debug.Log(string.Format("[SoundManager] Too many sounds for group {0}", sound.MixerGroup)); return(null); } } } var pitch = sound.Pitch; if (sound.RandomizePitch) { pitch = Random.Range(pitch - sound.MaxPitchShift, pitch + sound.MaxPitchShift); } var delay = sound.Delay; if (sound.RandomizeDelay) { delay += Random.value * sound.MaxAdditionalDelay; } var handler = Play(sound.Clip, sound.VolumeModifier, sound.Loop, pitch, sound.IgnoreListenerPause, delay, sound.MixerGroup); if (isLimiting && handler != null) { if (isInGroup) { // There are sounds in group so increment by one _groupCounter[sound.MixerGroup] = soundsInGroup + 1; } else { // First sound in group _groupCounter.Add(sound.MixerGroup, 1); } } return(handler); }
public SoundHandler Play(global::Utils.Sound.Sound sound, Transform attachTo) { var s = Play(sound); if (s != null) { s.AttachToObject(attachTo); } return(s); }