Unity实现OnAudioFilterRead后,Inspector为何未显示VU与CPU仪表?
问题排查:Unity OnAudioFilterRead 仪表未显示的原因及解决办法
1. 项目音频链路未正确打通
- 确保音频源的
Output插槽已指定到音频混合器的某个Group,仅开启混音器上下文菜单的性能显示选项不够,必须让音频流实际通过混合器,才会触发仪表的统计逻辑。 - 检查
Edit > Project Settings > Audio中的DSP Buffer Size:若设置为Best Latency,可能会跳过部分性能采样,尝试切换到Good Latency或Default后重启编辑器。
2. Unity 2022 LTS版本的触发限制
Unity 2022.3.x LTS分支对该仪表显示有特定要求:
- 脚本必须直接挂载在带有AudioSource组件的GameObject上,挂载到子对象或空对象上,即使功能正常也不会显示仪表。
- 回调函数必须严格匹配官方签名:
void OnAudioFilterRead(float[] data, int channels),参数名、类型不能自定义修改,否则Unity内部统计钩子无法识别。
3. 注册表路径与版本不匹配
即使修改了注册表键,也要注意路径对应Unity版本:
- 2022.3.x的正确注册表路径应为
HKEY_CURRENT_USER\Software\Unity Technologies\Unity Editor 2022.x\Audio\ShowDSPPerformance,旧版本路径的设置不会生效。 - 修改注册表后必须完全关闭Unity所有进程再重启,仅重启项目无法读取新的注册表值。
4. 自定义Inspector或第三方插件冲突
- 若项目中有
[CustomEditor]标记的自定义Inspector脚本,可能覆盖了Unity默认的MonoBehaviour绘制逻辑,导致仪表被隐藏,可临时禁用这类脚本测试。 - 部分第三方音频插件(如Wwise、FMOD)会接管音频管线,可能屏蔽原生的
OnAudioFilterRead统计功能,需暂时移除插件验证。
内容的提问来源于stack exchange,提问作者aybe
相关产品推荐
相关产品推荐

