首页/ 第 11 章 · 音频系统/ 第 184 课
LESSON 184 · 音频系统

音频进阶:动态混音与空间感

动态混音完成。下一课音频章收尾。

⏱ 约 14 分钟📊 难度:入门🗂 第 11 章 · 音频系统📍 第 184 / 300 课
课程进度
184 / 300

🎯本节学习目标

  • 实现 BGM 闪避
  • 实现动态混音
  • 实现空间混响

🚀课程导读

“角色说话时 BGM 自动变小”——动态混音是专业音频的“高级感”。本课掌握。

BGM 闪避 Ducking

语音时背景“让路”。

  1. 【闪避】有重要声音(对话/旁白)时,BGM 音量自动降低,结束后恢复。
  2. 【实现】代码控制(简单):
  3. public AudioMixer mixer;
  4. public void DialogueStart() { StartCoroutine(Fade(“bgmVol”, -12f, 0.3f)); }
  5. public void DialogueEnd() { StartCoroutine(Fade(“bgmVol”, 0f, 0.5f)); }
  6. IEnumerator Fade(string param, float target, float t) {
  7. float start; mixer.GetFloat(param, out start);
  8. float el = 0;
  9. while (el < t) { el += Time.deltaTime; mixer.SetFloat(param, Mathf.Lerp(start, target, el/t)); yield return null; }
  10. }
  11. 【触发】对话系统开始/结束调用 DialogueStart/End。
  12. 【效果】说话时音乐“让位”,说完恢复。
  13. 【注意】推子要先 Exposed(第 176 课)。
  14. 【完成】“让路”成功。
  15. 【推荐】过场/对话多的时候强烈建议。
  16. 【说明】专业做法用 Sidechain(侧链压缩,FMOD/Wwise 里实现)。
💡
BGM 闪避 = 对话开始降音乐、结束恢复。两行协程,体验专业。

动态混音与混响

空间感与状态变化。

  1. 【状态切换】低血量/战斗时换混音“快照”(第 176 课 Snapshot):
  2. AudioMixerSnapshot normal = mixer.FindSnapshot(“Normal”);
  3. AudioMixerSnapshot battle = mixer.FindSnapshot(“Battle”);
  4. battle.TransitionTo(0.3f); // 平滑切到战斗混音(更重低音等)
  5. 【混响 Reverb】给音效组加 Reverb 效果:
  6. 选中 Mixer 的 SFX 组 → Add Effect → Reverb。
  7. 调节 Room(空间感)、Damping 等。
  8. 【空间区分】室内/室外切换混响参数(进房间 Reverb 增强)。
  9. 【实现】进入房间触发器:
  10. mixer.SetFloat(“ReverbAmount”, 80f); // Exposed Reverb 参数
  11. 【完成】场景“有空间感”。
  12. 【注意】混响别过重(糊),适量。
  13. 【推荐】先做闪避+快照,混响按需。
  14. 【进阶】Wwise/FMOD 专业音频中间件(行业标准,进阶)。
动态混音 = 闪避(对话让路)+ 快照(状态切换)+ 混响(空间感)。三招。

常见错误与排查

错误:混响没效果?
原因:参数没 Exposed 或效果没加
解决:SFX 组 Add Effect 加 Reverb;要控制参数需 Exposed 并用代码 SetFloat。

动手练习

课后小任务(做出来才算真的学会)

  • 实现 BGM 对话闪避
  • 做低血量战斗快照切换
  • 给室内加混响

本节小结

动态混音完成。下一课音频章收尾。

完成打卡后,主站会实时更新你的学习进度 🎯

← 上一课音频综合练习:完整音频系统