public IEnumerator FadeOut(float seconds) { if (!_fadingOut) { _fadingOut = true; var totalSeconds = seconds; float introSourceVolume = 0; if (_introSource != null) { introSourceVolume = _introSource.volume; } float loopSourceVolume = 0; if (_loopSource != null) { loopSourceVolume = _loopSource.volume; } if (_loopSource != null && _data.CacheExecution) { var name = _data.Name; K_EXECUTION_POINT[name] = new LastExecutionData(_loopSource.time, seconds); } while (seconds > 0 && ((_introSource != null) || (_loopSource != null))) { seconds -= Time.deltaTime; var step = seconds / totalSeconds; step = FloatAnimator.EasyInEasyOut(step, .5f); if (_introSource != null) { _introSource.volume = introSourceVolume * step; } if (_loopSource != null) { _loopSource.volume = loopSourceVolume * step; } yield return(null); } if (_introSource != null) { GameObject.Destroy(_introSource.gameObject); } if (_loopSource != null) { GameObject.Destroy(_loopSource.gameObject); } _fadingOut = false; } }
public IEnumerator FadeIn(AudioSource source, float seconds) { float accTime = 0; while (accTime < seconds && !_fadingOut) { accTime += Time.deltaTime; if (accTime > seconds) { accTime = seconds; } source.volume = FloatAnimator.EasyInEasyOut(accTime / seconds, .5f); yield return(null); } }