/// <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; } } }
/// <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; }