Exemplo n.º 1
0
        /// <summary>
        /// Tocar um AudioClip.
        /// OBS.: O AudioSource vai ter Loop caso o MixerGroup seja Background. Caso haja necessidade de ter Backgrouns sem loop, outro MixerGroup deve ser criado na estrutura.
        /// </summary>
        /// <param name="audioClip">AudioClip para ser tocado.</param>
        /// <param name="audioMixerGroupName">Tipo de AudioClip.</param>
        /// <param name="delay">Delay em segundos para tocar o AudioClip.</param>
        public static AudioSource Play(AudioClip audioClip, AudioMixerGroupNames audioMixerGroupName, float delay = 0)
        {
            if (audioClip == null)
            {
                return(null);
            }

            AudioSource audioSource = AudioPooler.AudioSource;

            try
            {
                AudioMixerGroup audioMixerGroup = Instance.GetAudioMixerGroupByName(audioMixerGroupName);
                audioSource.outputAudioMixerGroup = audioMixerGroup;

                audioSource.clip = audioClip;
                audioSource.PlayDelayed(delay);
                audioSource.loop = audioMixerGroupName == AudioMixerGroupNames.Background;
            }
            catch (System.Exception e)
            {
                Debug.LogError(e.Message);
                Debug.LogError(e.StackTrace);
            }

            return(audioSource);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Configurar o volume de uma determinado grupo de Audio.
        /// </summary>
        /// <param name="audioMixerGroupName">Nome do grupo de Audio.</param>
        /// <param name="volume">[0 dB] = Normal volume. [-80 dB] = Minimum volume. [20 dB] = Maximum volume.</param>
        public void OnVolumeChangedHandler(AudioMixerGroupNames audioMixerGroupName, float volume)
        {
            string audioMixerParameterName = string.Format("{0}_Volume", audioMixerGroupName);

            lastVolume = (int)volume;

            MasterAudioMixer.SetFloat(audioMixerParameterName, volume);
        }
        public static float GetVolume(AudioMixerGroupNames audioMixerGroupName)
        {
            if (!VolumesDict.ContainsKey(audioMixerGroupName))
            {
                LoadSavedConfigs();
            }

            return(VolumesDict[audioMixerGroupName]);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Dar Pause em todos os AudioSources do Pooler que estao nesse MixerGroup.
        /// </summary>
        /// <param name="audioMixerGroupName"></param>
        /// <param name="useFade"></param>
        /// <returns>Lista de AudioSources que foram pausados.</returns>
        public static List <AudioSource> UnPause(AudioMixerGroupNames audioMixerGroupName, bool useFade = true)
        {
            List <AudioSource> list = AudioPooler.AudioSourcesList.FindAll(x => x.outputAudioMixerGroup == Instance.GetAudioMixerGroupByName(audioMixerGroupName) && x.IsPaused());

            float duration = useFade ? 0.5f : 0.0f;

            list.ForEach(x =>
            {
                x.DOKill();

                x.DOFade(1, duration).OnComplete(() => x.UnPause());
            });

            return(list);
        }
        public static void SaveVolume(AudioMixerGroupNames audioMixerGroupName, float volume)
        {
            string playerPrefsKey = string.Format("{0}_AudioSource_Volume", audioMixerGroupName.ToString());

            PlayerPrefs.SetFloat(playerPrefsKey, volume);

            if (VolumesDict.ContainsKey(audioMixerGroupName))
            {
                VolumesDict[audioMixerGroupName] = volume;
            }
            else
            {
                VolumesDict.Add(audioMixerGroupName, volume);
            }

            //Debug.Log("SAVE: " + playerPrefsKey + " = " + VolumesDict[audioSourceType]);

            if (OnVolumeChanged_Action != null)
            {
                OnVolumeChanged_Action(audioMixerGroupName, volume);
            }
        }
Exemplo n.º 6
0
        /// <summary>
        /// Dar Stop em todos os AudioSources do Pooler que estao nesse MixerGroup.
        /// </summary>
        /// <param name="audioMixerGroupName"></param>
        /// <param name="useFade"></param>
        public static void Stop(AudioMixerGroupNames audioMixerGroupName, bool useFade = true)
        {
            try
            {
                List <AudioSource> list = AudioPooler.AudioSourcesList.FindAll(x => x.outputAudioMixerGroup == Instance.GetAudioMixerGroupByName(audioMixerGroupName) && !x.IsStopped());

                float duration = useFade ? 0.5f : 0.0f;

                list.ForEach(x =>
                {
                    AudioPooler.AudioSourcesList.Remove(x);

                    x.DOKill();

                    x.DOFade(0, duration).OnComplete(() => x.Stop());
                });
            }
            catch (System.Exception e)
            {
                Debug.LogError(e.Message);
                Debug.LogError(e.StackTrace);
            }
        }
Exemplo n.º 7
0
        /// <summary>
        /// Tocar um Audio baseado no caminho dentro da pasta Resources.
        /// OBS.: O AudioSource vai ter Loop caso o MixerGroup seja Background. Caso haja necessidade de ter Backgrouns sem loop, outro MixerGroup deve ser criado na estrutura.
        /// </summary>
        /// <param name="resourcesPath">Caminho do AudioClip para ser tocado.</param>
        /// <param name="audioMixerGroupName">Tipo de AudioClip.</param>
        /// <param name="delay">Delay em segundos para tocar o AudioClip.</param>
        public static AudioSource Play(string resourcesPath, AudioMixerGroupNames audioMixerGroupName, float delay = 0)
        {
            AudioSource audioSource = null;

            try
            {
                AudioClip audioClip = Resources.Load <AudioClip>(resourcesPath);

                // Se nao encontrar nenhum audioClip, pegar um vazio.
                if (audioClip == null)
                {
                    audioClip = Resources.Load <AudioClip>(EMPTY_AUDIO);
                }

                audioSource = Play(audioClip, audioMixerGroupName, delay);
            }
            catch (System.Exception e)
            {
                Debug.LogError(e.Message);
                Debug.LogError(e.StackTrace);
            }

            return(audioSource);
        }
Exemplo n.º 8
0
        private AudioMixerGroup GetAudioMixerGroupByName(AudioMixerGroupNames audioMixerGroupName)
        {
            AudioMixerGroup audioMixerGroup = MasterAudioMixer.FindMatchingGroups("Master").FirstOrDefault(x => x.name.Equals(audioMixerGroupName.ToString()));

            return(audioMixerGroup);
        }
Exemplo n.º 9
0
        /// <summary>
        /// Verifica se o MixerGroup esta tocando algum audio.
        /// </summary>
        /// <param name="audioMixerGroupName"></param>
        /// <returns></returns>
        public static bool IsPlaying(AudioMixerGroupNames audioMixerGroupName)
        {
            bool exists = AudioPooler.AudioSourcesList.Exists(x => x.outputAudioMixerGroup == Instance.GetAudioMixerGroupByName(audioMixerGroupName) && !x.IsStopped());

            return(exists);
        }