HOME / 第 4 部分 · UI 界面 · 动画 · 特效 / 第 45 课
MODULE 4 · UI 界面 · 动画 · 特效
第 45 课 · 音频总线与 3D 音效
🎯 本课学习目标
- 理解音频总线(Audio Bus)
- 创建总线并控制音量
- 用 AudioStreamPlayer2D/3D 做空间音效
音频总线是「声音的混音台」,3D 音效能随距离变远变轻。本课升级音频系统。
📖 详细教学步骤
什么是音频总线?概念
音频总线(Audio Bus)类似混音台:每个播放器把声音送到某条总线,总线可以统一控制音量/效果:
- 总线 Master:所有声音最终汇到这里
- 总线 Music:所有音乐音量统一调
- 总线 SFX:所有音效音量统一调
- 总线上还能加效果(回声、低通滤波)
创建总线操作
- 底部面板切换到 音频(Audio) 标签
- 点 + 添加两条总线:Music、SFX
- 把播放器的 Bus 属性设置成对应总线
- 在音频面板拖动滑块可实时调总线音量
用代码控制总线音量代码
第 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 游戏里想让声音「有位置感」(靠近大声、远离小声):
- 把普通 AudioStreamPlayer 换成
AudioStreamPlayer2D - 它有一个位置(2D 坐标),与听者(一般是玩家)距离越近越大声
- 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 提供空间音效,随距离衰减。