//Update private void Update() { if (_newClip != null) { if (!_audioSource.isPlaying || _audioSource.volume == 0f) { _audioSource.clip = _newClip.audioClip; _currentClip = _newClip; _desiredVolume = GameConfiguration.Instance.GetBGMVolume() * _baseVolumeFactor * _currentClip.volumeFactor; _newClip = null; if (!_audioSource.isPlaying) { _audioSource.volume = _desiredVolume; _audioSource.Play(); } } else if (_audioSource.volume > 0f) { _audioSource.volume = Mathf.Max(_audioSource.volume - (_volumeFadeFactor * Time.deltaTime), 0f); } } else if (_audioSource.volume != _desiredVolume) { if (_audioSource.volume > _desiredVolume) { _audioSource.volume = Mathf.Max(_audioSource.volume - (_volumeFadeFactor * Time.deltaTime), _desiredVolume); } else { _audioSource.volume = Mathf.Min(_audioSource.volume + (_volumeFadeFactor * Time.deltaTime), _desiredVolume); } } }
//Play BGM private void PlayBGM(string trigger) { foreach (BGMAudioInfo tmp in _BGMClips) { if (tmp.trigger.Equals(trigger)) { if (_audioSource.clip == tmp.audioClip) { return; //Already playing } else { _newClip = tmp; return; } } } }