Godot音频
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/godot-audio-sofw
技能介绍
它在解决什么问题
在 Godot 里让声音响起来很容易,让它响得正确却不容易。典型问题包括:音量滑块拖到一半听起来几乎没变化(因为 volume_db 用的是分贝而非线性值)、同一个 AudioStreamPlayer 被重复触发时短音效被截断、音乐不循环、3D 定位音频完全无声、以及只用 get_playback_position() 做节奏同步时抖动明显。这些坑的根源在于:音频系统运行在对数域,并且按 mix 帧更新,而不是按渲染帧更新。
技能如何工作
该技能把 Godot 4.3+ 的音频管线整理成一条清晰的工作流:
- 选择播放器节点:非定位声音(音乐、UI、全局音效)用
AudioStreamPlayer,3D 定位音频用AudioStreamPlayer3D。 - 路由到总线:在 Audio 面板定义 Master/Music/SFX 总线,播放器按名称绑定;通过
AudioServer按总线索引控制音量与静音。 - 用分贝思考:用
linear_to_db/db_to_linear映射 UI 滑块,并注意linear_to_db(0.0)会返回-inf。 - 节奏同步:结合
get_time_since_last_mix()补偿get_output_latency(),而不是只读播放位置。
适用边界
它只覆盖 Godot 引擎内的音频实现。引擎无关的音频设计(自适应音乐结构、混音哲学、ducking 模式)应交给 audio-design;引擎外的资源导入与编码同样不在范围内。
使用场景
- 为 2D 游戏角色的攻击和跳跃配置音效,并让音量随距离做 2D 衰减
- 把背景音乐与音效分别接入 Music/SFX 总线,用代码按 dB 控制音量和静音
- 实现两段背景音乐之间的交叉淡出切换,避免硬切带来的爆音
- 开发节奏游戏,把判定时间对齐到音乐节拍,补偿音频输出延迟
适合人员
- 用 Godot 4.3+ 开发游戏的程序员,需要在代码里正确控制音量与总线路由
- 独立游戏开发者,想给游戏配上背景音乐和音效但不熟悉 Godot 音频 API
- 开发节奏类或音乐游戏的工程师,需要做节拍同步和输出延迟补偿