Exemplo n.º 1
0
 void StartFadingOutLongSound(string name)
 {
     LongSoundFadingOut fader = new LongSoundFadingOut();
     LongSound sound = _longSounds[name];
     fader.Source = sound.Source;
     fader.FadingTime = sound.FadingTime;
     fader.Timer = 0;
     fader.StartVolume = sound.Source.volume;
     _longSoundFadingsOut.Add(fader);
 }
Exemplo n.º 2
0
 void StartFadingOutMusic()
 {
     if (_currentMusic != null)
     {
         LongSoundFadingOut fader = new LongSoundFadingOut();
         fader.Source = _currentMusic.Source;
         fader.FadingTime = GameData.Instance.GameSoundSettings.MusicFadeTime;
         fader.Timer = 0;
         fader.StartVolume = _currentMusic.Source.volume;
         _longSoundFadingsOut.Add(fader);
     }
 }
Exemplo n.º 3
0
    void Update()
    {
        // Destory only one sound per frame
        Sound soundToDelete = null;

        foreach (Sound sound in _sounds)
        {
            if (IsSoundFinished(sound))
            {
                soundToDelete = sound;
                break;
            }
        }

        if (soundToDelete != null)
        {
            _sounds.Remove(soundToDelete);
            Destroy(soundToDelete.Source);
        }

        if (GameData.Instance.GameSoundSettings.AutoPause)
        {
            bool curPause = Time.timeScale < 0.1f;
            if (curPause != AudioListener.pause)
            {
                AudioListener.pause = curPause;
            }
        }

        for (int i = 0; i < _longSoundFadingsOut.Count; i++)
        {
            LongSoundFadingOut longSound = _longSoundFadingsOut[i];
            if (longSound.Source == null)
            {
                _longSoundFadingsOut.RemoveAt(i);
                i--;
            }
            else
            {
                longSound.Timer += Time.unscaledDeltaTime;
                _longSoundFadingsOut[i] = longSound;
                if (longSound.Timer >= longSound.FadingTime)
                {
                    Destroy(longSound.Source);
                    _longSoundFadingsOut.RemoveAt(i);
                    i--;
                }
                else
                {
                    float k = Mathf.Clamp01(longSound.Timer / longSound.FadingTime);
                    longSound.Source.volume = Mathf.Lerp(longSound.StartVolume, 0, k);
                }
            }
        }

        if (_currentMusic != null && _currentMusic.FadingIn)
        {
            _currentMusic.Timer += Time.unscaledDeltaTime;
            if (_currentMusic.Timer >= _currentMusic.FadingTime)
            {
                _currentMusic.Source.volume = _currentMusic.TargetVolume;
                _currentMusic.FadingIn = false;
            }
            else
            {
                float k = Mathf.Clamp01(_currentMusic.Timer / _currentMusic.FadingTime);
                _currentMusic.Source.volume = Mathf.Lerp(0, _currentMusic.TargetVolume, k);
            }
        }

        foreach (var longSound in _longSounds)
        { 
            if (longSound.Value.FadingIn)
            {
                longSound.Value.Timer += Time.deltaTime;
                if (longSound.Value.Timer >= longSound.Value.FadingTime)
                {
                    longSound.Value.Source.volume = longSound.Value.TargetVolume;
                    longSound.Value.FadingIn = false;
                }
                else
                {
                    float k = Mathf.Clamp01(longSound.Value.Timer / longSound.Value.FadingTime);
                    longSound.Value.Source.volume = Mathf.Lerp(0, longSound.Value.TargetVolume, k);
                }
            }
        }
    }