Godot 音频
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/godot-audio-sh-0rkwcx。
技能介绍
解决的问题
Godot 音频代码常卡在几个地方:把 volume_db 当成线性音量,导致 0.5 接近满音量;总线名拼错时 get_bus_index() 返回 -1;重复触发同一 AudioStreamPlayer 会截断短音效;.ogg 或 .wav 未开启 loop 时音乐不循环;3D 音频没有 AudioListener3D / Camera3D 或衰减参数过紧而听不见;只用 get_playback_position() 做节拍同步会出现抖动。
技能如何工作
本技能面向 Godot 4.3+,把音频实现拆成节点选择、流配置、总线路由、分贝控制和节拍补偿五步:
- 根据是否空间化选择
AudioStreamPlayer、AudioStreamPlayer2D或AudioStreamPlayer3D。 - 为播放器分配
AudioStream,音乐和循环音常用.ogg,短音效常用.wav。 - 将播放器挂到
Music、SFX等命名总线,再在 Audio 面板配置音量、静音、solo,以及 reverb、compressor 等效果。 - 用
linear_to_db/db_to_linear映射滑条,并用AudioServer按总线索引控制volume_db和 mute。 - 处理节拍时加入
get_time_since_last_mix(),并减去get_output_latency(),减少输出延迟造成的漂移。
适用边界与注意
它覆盖 Godot 内的播放、总线、效果、3D 音频和 timing,不负责引擎无关的 adaptive music design、混音哲学或外部资产编码。实际接入时要避免 linear_to_db(0.0) 返回 -inf,需要 clamp 或特殊静音;短音效建议使用多个播放器、AudioStreamPolyphonic 或按次释放。
使用场景
- 在 Godot 4 中为按钮点击、命中和关卡事件接入一次触发即播的音效。
- 把背景音乐和 SFX 分到 Music、SFX 总线,用 AudioServer 调整 dB 与静音。
- 在 3D 场景中让音效随角色距离衰减,并排查 AudioListener3D 与衰减参数。
- 依据播放位置、mix 时间和输出延迟,让技能释放或动作对齐音乐节拍。
适合人员
- Godot 4 客户端工程师:把音效从编辑器配置落到代码可控的播放器、总线和 dB 音量。
- 游戏技术美术:给场景添加 reverb、compressor 等总线效果,并排查静音或衰减异常。
- 节奏玩法开发者:补偿输出延迟,让打击、动作或关卡事件稳定卡拍。
- 独立游戏开发者:管理音乐、UI 音效与 3D 音效的节点选择、loop 和播放截断。