HOME / 第 4 部分 · UI 界面 · 动画 · 特效 / 第 45 课
MODULE 4 · UI 界面 · 动画 · 特效

第 45 课 · 音频总线与 3D 音效

⏱ 预计时长 30 分钟📊 难度 进阶📚 模块 第 4 部分 · UI 界面 · 动画 · 特效

🎯 本课学习目标

音频总线是「声音的混音台」,3D 音效能随距离变远变轻。本课升级音频系统。

📖 详细教学步骤

什么是音频总线?概念

音频总线(Audio Bus)类似混音台:每个播放器把声音送到某条总线,总线可以统一控制音量/效果:

  • 总线 Master:所有声音最终汇到这里
  • 总线 Music:所有音乐音量统一调
  • 总线 SFX:所有音效音量统一调
  • 总线上还能加效果(回声、低通滤波)

创建总线操作

  1. 底部面板切换到 音频(Audio) 标签
  2. 点 + 添加两条总线:Music、SFX
  3. 把播放器的 Bus 属性设置成对应总线
  4. 在音频面板拖动滑块可实时调总线音量

用代码控制总线音量代码

第 35 课的音量滑块真正生效:

GDSCRIPTfunc set_music_volume(value: float):
    # value: 0.0~1.0
    var bus = AudioServer.get_bus_index("Music")
    AudioServer.set_bus_volume_db(bus, linear_to_db(value))
    # 静音开关
    # AudioServer.set_bus_mute(bus, true)

总线添加特效进阶

在音频面板选总线 → 添加效果(Add Effect):

  • Reverb 混响:让声音有空间感(山洞、大厅)
  • LowPassFilter 低通:模拟水下/隔墙的声音
  • Compressor 压缩器:让音量更稳定

💡 水下关卡切低通,效果立竿见影。

AudioStreamPlayer2D:空间音效实操

2D 游戏里想让声音「有位置感」(靠近大声、远离小声):

  1. 把普通 AudioStreamPlayer 换成 AudioStreamPlayer2D
  2. 它有一个位置(2D 坐标),与听者(一般是玩家)距离越近越大声
  3. Max Distance 控制衰减范围

💡 敌人脚步、箱子掉落用 2D 音效非常自然。

AudioStreamPlayer3D:3D 音效进阶

3D 游戏里声音有远近左右方向感:

  • AudioStreamPlayer3D 挂在 3D 物体上
  • 设置 Max Distance 与衰减曲线
  • 听者默认是当前 3D 相机,自动按距离衰减
⚠️
总线音量改了没声音变化?

确认播放器的 Bus 属性确实指向那条总线(默认是 Master)。

⚠️
3D 音效没随距离变化?

检查 Max Distance 是否设置合理、衰减曲线是否启用。

🧪 动手试一试

🏋️ 课后练习

建立 Music/SFX 两条总线,背景音乐走 Music、音效走 SFX,用两个滑块分别控制音量。

AudioServer.get_bus_index + set_bus_volume_db + linear_to_db。

💡

总线加 Reverb 是提升音质最省事的一招。

💡

做设置菜单时,音量滑块控制总线而不是单个播放器,是正确姿势。

🎓 本课小结

音频总线是混音台:Music/SFX 分开控制音量、可加效果器;AudioStreamPlayer2D/3D 提供空间音效,随距离衰减。