void Update() { if (this.mChatSound != null) { if (IsSoundFinished(this.mChatSound)) { this.mChatSound.IsValid = false; ObjectPool.Recycle(this.mChatSound.Source.gameObject); this.mChatSound = null; } } // Destory only one sound per frame SMSound soundToDelete = null; for (int i = 0; i < _sounds.Count; i++) { SMSound sound = _sounds[i]; if (IsSoundFinished(sound)) { soundToDelete = sound; break; } } if (soundToDelete != null) { soundToDelete.IsValid = false; _sounds.Remove(soundToDelete); //Destroy(soundToDelete.Source.gameObject); /* * if(!string.IsNullOrEmpty(soundToDelete.assetBundleName)) * { * AssetBundleManager.UnloadAssetBundle(soundToDelete.assetBundleName, false); * } */ ObjectPool.Recycle(soundToDelete.Source.gameObject); } if (_settings.AutoPause) { bool curPause = Time.timeScale < 0.1f; if (curPause != AudioListener.pause) { AudioListener.pause = curPause; } } for (int i = 0; i < _musicFadingsOut.Count; i++) { SMMusicFadingOut music = _musicFadingsOut[i]; if (music.Source == null) { _musicFadingsOut.RemoveAt(i); i--; } else { music.Timer += Time.unscaledDeltaTime; _musicFadingsOut[i] = music; if (music.Timer >= music.FadingTime) { Destroy(music.Source.gameObject); _musicFadingsOut.RemoveAt(i); i--; } else { float k = Mathf.Clamp01(music.Timer / music.FadingTime); music.Source.volume = Mathf.Lerp(music.StartVolume, 0, k); } } } if (_music != null && _music.FadingIn) { _music.Timer += Time.unscaledDeltaTime; if (_music.Timer >= _music.FadingTime) { _music.Source.volume = _music.TargetVolume; _music.FadingIn = false; } else { float k = Mathf.Clamp01(_music.Timer / _music.FadingTime); _music.Source.volume = Mathf.Lerp(0, _music.TargetVolume, k); } } }
void Update() { // Destory only one sound per frame SMSound soundToDelete = null; foreach (SMSound sound in _sounds) { if (IsSoundFinished(sound)) { soundToDelete = sound; break; } } if (soundToDelete != null) { soundToDelete.IsValid = false; _sounds.Remove(soundToDelete); Destroy(soundToDelete.Source.gameObject); } if (_settings.AutoPause) { bool curPause = Time.timeScale < 0.1f; if (curPause != AudioListener.pause) { AudioListener.pause = curPause; } } for (int i = 0; i < _musicFadingsOut.Count; i++) { SMMusicFadingOut music = _musicFadingsOut[i]; if (music.Source == null) { _musicFadingsOut.RemoveAt(i); i--; } else { music.Timer += Time.unscaledDeltaTime; _musicFadingsOut[i] = music; if (music.Timer >= music.FadingTime) { Destroy(music.Source.gameObject); _musicFadingsOut.RemoveAt(i); i--; } else { float k = Mathf.Clamp01(music.Timer / music.FadingTime); music.Source.volume = Mathf.Lerp(music.StartVolume, 0, k); } } } if (_music != null && _music.FadingIn) { _music.Timer += Time.unscaledDeltaTime; if (_music.Timer >= _music.FadingTime) { _music.Source.volume = _music.TargetVolume; _music.FadingIn = false; } else { float k = Mathf.Clamp01(_music.Timer / _music.FadingTime); _music.Source.volume = Mathf.Lerp(0, _music.TargetVolume, k); } } }