音频性能与并发

自动关联目录:音频性能与并发

1. 定位

音频最常见的事故不是"播不出来",而是"播太多":群体战斗、爆炸、连锁触发时几十个音源同时播放 → 爆音 + CPU/音频线程飙升。

一句话定位:限定同类音效的最大并发数,是音频性能的第一道防线——其余优化都排在这一条之后。

2. 并发控制

设置说明
USoundConcurrency并发设置资产
Max Count同类音效最多同时播几个
Resolution Rule超限时的策略:阻止新的 / 停最旧的 / 停最远的 / 停最小音量
SoundClass 的 Priority资源紧张时谁被牺牲
Volume Scale同类叠加时的音量处理

典型配置:

音效类型建议
子弹/命中严格限制(如 8–16),超了停最旧的
脚步限制 + 随机化
环境循环数量少,可常驻
UI限制很低(重复点击不该叠加)

3. 成本来源

来源说明
音源数量每个活跃音源都有解码与混音成本
解码压缩格式的解压成本(见 音频资源与流式)
实时 DSP效果链(滤波、混响、遮挡)都有成本
遮挡检测射线开销,按音源计
空间化(HRTF)比非空间化贵
MetaSound 实例图求值成本(见 MetaSounds)

4. 优化手段(按收益排序)

1. 限制并发(最有效)
2. 按距离/重要性剔除远处音源
3. 减少实时 DSP 与效果链
4. 遮挡检测只对重要音源开,并限制频率
5. 压缩格式与采样率(见音频资源与流式篇)
6. 减少空间化(次要音源用非空间化)

5. 代价与权衡

设计收益代价什么时候不该用
严格限制并发防止爆音与飙升极端情况下会丢音关键音(如玩家自己的开火)优先级要调高
Resolution Rule 停最旧保留最新的信息旧音被截断长尾音(如爆炸余音)可能突兀
Resolution Rule 阻止新不打断已有新事件没反馈高频事件会"没声音"
SoundClass 优先级关键音不被牺牲需规划分类分类体系要先建
遮挡检测真实感射线成本次要音源不开
HRTF 空间化定位准确更贵环境音可不开

6. 踩坑与排查

坑现象怎么验证
每颗子弹都播且不限并发群体战斗爆音加 USoundConcurrency
循环音效忘了 Stop泄漏、叠加检查停止路径
音效挂在会被销毁的 Actor 上声音被切断改用 PlaySoundAtLocation 或挂到稳定对象
遮挡检测开太多射线开销只对重要音源开
DSP 链过长音频线程贵精简效果
优先级没规划关键音被牺牲用 SoundClass 分层
移动端没测低端机爆音在最低配机型测

7. 排查顺序

1. 爆音/卡?→ 先统计同时活跃的音源数量
2. 加并发限制,选对 Resolution Rule
3. 按距离剔除远处音源
4. 遮挡检测与 DSP 是否过多
5. 用 SoundClass 分层保证关键音
6. 在最低配机型复测

参考