private void StartNewMusic(CustomAudioClip customAudioClip, MusicFadeSettings fadeSettings)
    {
        var audioPlayer = AudioPlayerPool.Instance.GetNewAndEnable();

        audioPlayer.Play(customAudioClip);
        _currentMusicPlayer = audioPlayer;
        audioPlayer.FadeInAsync(fadeSettings);
    }
예제 #2
0
    public void FadeInAsync(MusicFadeSettings fadeSettingsOverride = null)
    {
        if (_customAudioClip == null)
        {
            Debug.LogWarning("Tried to fade in music but no music was playing");
            return;
        }

        StartCoroutine(FadeInCoroutine());
    }
    public void PlayNewMusicAsync(CustomAudioClip newMusic, MusicFadeSettings overrideFadeSettings = null)
    {
        if (!newMusic.IsMusic)
        {
            Debug.LogError($"{newMusic.name} does not have IsMusic = true");
            return;
        }

        StartCoroutine(PlayNewMusicCoroutine(newMusic, overrideFadeSettings));
    }
    private IEnumerator PlayNewMusicCoroutine(CustomAudioClip newMusic, MusicFadeSettings overrideFadeSettings = null)
    {
        var fadeSettings = overrideFadeSettings ?? _defaultMusicFadeSettings;

        if (_currentMusicPlayer != null)
        {
            StopCurrentMusic(fadeSettings);
            yield return(new WaitForSeconds(_defaultMusicFadeSettings.DelayBetweenSongsInSeconds));
        }

        StartNewMusic(newMusic, fadeSettings);
    }
예제 #5
0
    private IEnumerator FadeOutCoroutine(MusicFadeSettings fadeSettingsOverride = null)
    {
        _isFading = true;
        var fadeSettings = fadeSettingsOverride ?? _defaultFadeSettings;

        if (fadeSettings.FadeTimeInSeconds != 0)
        {
            var startingVolume = _audioSource.volume;

            while (_audioSource.volume > 0f)
            {
                yield return(new WaitForSeconds(fadeSettings.UpdateDelayInSeconds));

                _audioSource.volume -= startingVolume * (fadeSettings.UpdateDelayInSeconds / fadeSettings.FadeTimeInSeconds);
            }
        }

        _audioSource.volume = 0f;
        _isMuted            = true;
        _isFading           = false;
    }
예제 #6
0
    private IEnumerator FadeInCoroutine(MusicFadeSettings fadeSettingsOverride = null)
    {
        _isMuted  = false;
        _isFading = true;
        var fadeSettings = fadeSettingsOverride ?? _defaultFadeSettings;

        var targetVolume = _customAudioClip.GetVolume() * AudioSettings.Instance.BaseVolume;

        if (fadeSettings.FadeTimeInSeconds != 0)
        {
            while (_audioSource.volume < targetVolume)
            {
                yield return(new WaitForSeconds(fadeSettings.UpdateDelayInSeconds));

                _audioSource.volume += targetVolume * (fadeSettings.UpdateDelayInSeconds / fadeSettings.FadeTimeInSeconds);
            }
        }

        _audioSource.volume = targetVolume;
        _isFading           = false;
    }
예제 #7
0
 public void PlayNewMusicAsync(CustomAudioClip music, MusicFadeSettings overrideFadeSettings = null)
 {
     AudioPlayerSpawner.Instance.PlayNewMusicAsync(music, overrideFadeSettings);
 }
예제 #8
0
 public void FadeOutAsync(MusicFadeSettings fadeSettingsOverride = null)
 {
     StartCoroutine(FadeOutCoroutine(fadeSettingsOverride));
 }
 private void StopCurrentMusic(MusicFadeSettings fadeSettings)
 {
     _currentMusicPlayer.FadeOutAsync(fadeSettings);
     AudioPlayerPool.Instance.ReturnAndDisable(_currentMusicPlayer);
     _currentMusicPlayer = null;
 }