/* * ----------------------- * BlendWithCurrentSnapshot() * ----------------------- */ public static void BlendWithCurrentSnapshot(MixerSnapshot blendSnapshot, float weight, float blendTime = 0.0f) { if (theAudioManager != null) { if (theAudioManager.audioMixer == null) { Debug.LogWarning("[AudioManager] can't call BlendWithCurrentSnapshot if the audio mixer is not set!"); return; } if (blendTime == 0.0f) { blendTime = Time.deltaTime; } if ((theAudioManager.currentSnapshot != null) && (theAudioManager.currentSnapshot.snapshot != null)) { if ((blendSnapshot != null) && (blendSnapshot.snapshot != null)) { weight = Mathf.Clamp01(weight); if (weight == 0.0f) { // revert to the default snapshot theAudioManager.currentSnapshot.snapshot.TransitionTo(blendTime); } else { AudioMixerSnapshot[] snapshots = new AudioMixerSnapshot[] { theAudioManager.currentSnapshot.snapshot, blendSnapshot.snapshot }; float[] weights = new float[] { 1.0f - weight, weight }; theAudioManager.audioMixer.TransitionToSnapshots(snapshots, weights, blendTime); } } } } }
/* * ----------------------- * SetCurrentSnapshot() * ----------------------- */ public static void SetCurrentSnapshot(MixerSnapshot mixerSnapshot) { #if UNITY_EDITOR if (mixerSnapshot == null || mixerSnapshot.snapshot == null) { Debug.LogError("[AudioManager] ERROR setting empty mixer snapshot!"); } else { Debug.Log("[AudioManager] Setting audio mixer snapshot: " + ((mixerSnapshot != null && mixerSnapshot.snapshot != null) ? mixerSnapshot.snapshot.name : "None") + " Time: " + Time.time); } #endif if (theAudioManager != null) { if ((mixerSnapshot != null) && (mixerSnapshot.snapshot != null)) { mixerSnapshot.snapshot.TransitionTo(mixerSnapshot.transitionTime); } else { mixerSnapshot = null; } theAudioManager.currentSnapshot = mixerSnapshot; } }