private void Awake() { AudioSource[] audioSources = GetComponents <AudioSource>(); for (int i = 0; i < audioSources.Length; ++i) { _musicPlayers.Add(new LinkedAudioSource(audioSources[i])); } int i_next; for (int i = 0; i < _musicPlayers.Count; ++i) { _musicPlayers[i].Source.loop = true; i_next = i + 1; if (i_next >= _musicPlayers.Count) { i_next = 0; } _musicPlayers[i].Next = _musicPlayers[i_next]; } if (_musicPlayers.Count == 0) { throw new InvalidSettingException("Cannot find any music player"); } _currentlyUsedPlayer = _musicPlayers[0]; }
private IEnumerator VolumeDown(LinkedAudioSource musicPlayer, AudioClip musicClip) { _musicUpTransitionCoroutine = StartCoroutine(VolumeUp(musicPlayer.Next, musicClip)); do { musicPlayer.Source.volume -= Time.fixedDeltaTime * _transitionRate; yield return(null); }while(musicPlayer.Source.volume > 0f); musicPlayer.Source.Stop(); _musicDownTransitionCoroutine = null; }
private IEnumerator VolumeUp(LinkedAudioSource musicPlayer, AudioClip musicClip) { musicPlayer.Source.clip = musicClip; musicPlayer.Source.Play(); do { musicPlayer.Source.volume += Time.fixedDeltaTime * _transitionRate; yield return(null); }while (musicPlayer.Source.volume < _volume); _currentlyUsedPlayer = musicPlayer; _musicUpTransitionCoroutine = null; }