예제 #1
0
        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];
        }
예제 #2
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;
 }
예제 #3
0
 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;
 }