Ejemplo n.º 1
0
        public void SetTrack(string resourceName,
                             bool fadeTracks = true)
        {
            RefreshMusicVolumeFromGameSettings();

            bool hasStartingClip = AudioStorage.GetMusicClip(resourceName, true) != null;

            ResetSourceSettings();

            if (fadeTracks)
            {
                TryEndCurrentCoroutine();

                currentCoroutine = StartCoroutine(FadeTracks(resourceName, musicFadeTime, hasStartingClip));
            }
            else
            {
                if (hasStartingClip)
                {
                    AudioSource.loop = false;
                    AudioSource.clip = AudioStorage.GetMusicClip(resourceName, true);
                    AudioSource.Play();
                    SetNextClip(AudioStorage.GetMusicClip(resourceName, false));
                }
                else
                {
                    AudioSource.loop = true;
                    AudioSource.clip = AudioStorage.GetMusicClip(resourceName, false);
                    AudioSource.Play();
                }
            }
        }
Ejemplo n.º 2
0
        private IEnumerator FadeTracks(string resourceName,
                                       float totalFadeTime,
                                       bool hasStartingClip)
        {
            float singleFadeTime = totalFadeTime / 2;
            float startVolume    = AudioSource.volume;

            yield return(StartCoroutine(FadeVolume(startVolume, 0, singleFadeTime)));

            #region Set New Track

            if (hasStartingClip)
            {
                AudioSource.loop = false;
                AudioSource.clip = AudioStorage.GetMusicClip(resourceName, true);
                AudioSource.Play();
            }
            else
            {
                AudioSource.loop = true;
                AudioSource.clip = AudioStorage.GetMusicClip(resourceName, false);
                AudioSource.Play();
            }

            #endregion

            yield return(StartCoroutine(FadeVolume(0, startVolume, singleFadeTime)));

            if (hasStartingClip)
            {
                SetNextClip(AudioStorage.GetMusicClip(resourceName, false));
            }
        }