コード例 #1
0
        /// <summary>
        /// Iniciar la reproducción de una pista por su key id
        /// </summary>
        /// <param name="key">Idendificador de la pista</param>
        /// <param name="loop">Reproducir en loop o solo una vez</param>
        /// <param name="randomTime">Iniciar reproducción en un tiempo aleatorio</param>
        public void PlayMusic(string key, bool loop, bool randomTime)
        {
            MusicTrackData audioTrack = tracklist.GetTrack(key);

            if (audioTrack != null)
            {
                if (currentTrack != audioTrack)
                {
                    SetMusic(audioTrack, loop, randomTime);
                    currentTrack = audioTrack;
                }
            }
        }
コード例 #2
0
        /// <summary>
        /// Iniciar reproducción de track seleccionado
        /// </summary>
        /// <param name="audioTrack">Descripción de música a reproducir</param>
        /// <param name="loop">Reproducir en loop o no</param>
        /// <param name="randomTime">Iniciar reproducción en un tiempo aleatorio</param>
        void SetMusic(MusicTrackData audioTrack, bool loop, bool randomTime)
        {
            int         nextSource  = activeSource + 1 > 1 ? 0 : 1;
            AudioSource audioSource = audioSources[nextSource];

            audioSource.loop = loop;

            if (audioSources[activeSource].isPlaying)
            {
                AudioSource previusSource = audioSources[activeSource];
                previusSource.DOFade(0, audioTrack.FadeDuration).onComplete += () => previusSource.Stop();
            }
            audioSource.clip   = audioTrack.AudioClip;
            audioSource.volume = 0;
            audioSource.Play();
            if (randomTime)
            {
                audioSource.time = Random.Range(0, audioSource.clip.length * .9f);
            }
            audioSource.DOFade(audioTrack.Volume, audioTrack.FadeDuration);
            activeSource = nextSource;
        }