diff --git a/Assets/Scripts/Framework/AudioKit/AudioManager.cs b/Assets/Scripts/Framework/AudioKit/AudioManager.cs index e10957eb3..f05d61633 100644 --- a/Assets/Scripts/Framework/AudioKit/AudioManager.cs +++ b/Assets/Scripts/Framework/AudioKit/AudioManager.cs @@ -468,13 +468,19 @@ namespace AibisDream.Kit public void SetVolume(float normalizedVolume) { - // 将 0~1 映射到 minDecibels ~ maxDecibels,再转换为线性幅度 - // 使用对数曲线匹配人耳听觉特性 - float db = Mathf.Lerp(minDecibels, maxDecibels, normalizedVolume); - float linearVolume = Mathf.Pow(10f, db / 20f); + normalizedVolume = Mathf.Clamp01(normalizedVolume); - var masterVca = RuntimeManager.GetBus("bus:/"); - masterVca.setVolume(linearVolume); + // 最低档需要真正静音;有限的最小分贝值仍会保留可听的线性幅度。 + float linearVolume = 0f; + if (normalizedVolume > 0f) + { + // 将非零音量映射到 minDecibels ~ maxDecibels,保留原有的对数听感曲线。 + float db = Mathf.Lerp(minDecibels, maxDecibels, normalizedVolume); + linearVolume = Mathf.Pow(10f, db / 20f); + } + + var masterBus = RuntimeManager.GetBus("bus:/"); + masterBus.setVolume(linearVolume); } #endregion