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(); } } }
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)); } }