13.Unity性能分析工具-Profiler窗口Audio
13.1 知识点
Audio是什么
Audio(音频)模块是用来分析和监控音频系统的性能表现的,包括音频播放、混音、音量、CPU 占用等关键信息。
在游戏中如果出现以下问题时,可以着重观察这里的内容:
- 声音异常(音量小、失真、播放顺序错误等等)、缺失
- 声音卡顿、延迟、音画不同步
- 声音内存占用过高
- 等等
总之,几乎所有和音频相关的问题,我们都可以通过该模块进行排查。
Audio中各参数功能的含义和作用
音效(Audio)分析窗口

- Playing Audio Sources:场景中在该帧播放的音频源的总数。此信息可用于监测音频是否过载。超过 20~30 个时,在移动端可能导致声音丢失或性能下降,如果你听不到声音、某些音效丢失,可以看这里是否 AudioSource 数量太多
- Audio Voices:该帧中使用的音频(FMOD 通道)语音数。若 AudioSource 多但 Voices 少,说明部分声音被”抢占”或”没被调度”
- Total Audio CPU:音频在该帧中使用的 CPU 使用量。一般 < 10% 属于健康,> 20% 则需排查
- Total Audio Memory:音频引擎在该帧中使用的内存量。持续增长或过大可能是资源未释放,或内存音频太多
简单(Simple)视图

- Total Audio Sources:场景中音频源的总数
- Playing Audio Sources:场景中播放的音频源的总数。超过 20~30 个时,在移动端可能导致声音丢失或性能下降,如果你听不到声音、某些音效丢失,可以看这里是否 AudioSource 数量太多
- Paused Audio Sources:场景中暂停的音频源的总数
- Audio Clip Count:场景中音频剪辑的总数
- Audio Voices:项目使用的音频通道(FMOD 通道)的总数。若 AudioSource 多但 Voices 少,说明部分声音被”抢占”或”没被调度”
- Total Audio CPU:音频使用的 CPU 总量
- DSP CPU:项目在加载类型为 Compressed In Memory(内存压缩)的非流式声音的混音、音频效果和解压缩中使用的 CPU 量。这不包括 Unity 在后台对加载类型为 Decompress On Load(加载时解压)并且选中 Load In Background 标志的声音进行解码所需的 CPU 量。一般 < 10% 属于健康,> 20% 则需排查
- Streaming CPU:项目在应用程序中流式传输音频所使用的 CPU 量
- Other CPU:上文未涵盖的常规 CPU 开销
- Total Audio Memory:项目中音频使用的内存量。持续增长或过大可能是资源未释放,或内存音频太多
- Streaming File Memory:从磁盘渐进读取加载类型为 Streaming 的音频文件时,音频文件用于短期缓冲已压缩音频数据的内存量
- Streaming Decode Memory:加载类型为 Streaming 的音频文件用于缓冲已解码样本流的内存量
- Sample Sound Memory:加载类型为 Decompress On Load 的音频文件用于已解压缩样本数据的内存量
- Other Memory:音频系统中各种子系统造成的开销
注意:Unity 汇集了音频系统分配的内存,并且该内存在应用程序的运行时间内一直增长,直到达到饱和。音频系统会在内部重用分配的内存,在运行时无法压缩该内存。
详细(Detailed)视图

详细(Detailed)视图中不仅包含简单(Simple)视图中的所有信息,还包含音频事件等详细记录。
上方的几个选项分别代表:
- Channels:频道信息
- Groups:分组信息
- Channels and groups:频道和分组信息
- Reset play count on play:当开始运行或链接到新目标设备时,会重置列表中的数字
下方详细信息:
- Object:包含播放音频的音频源的游戏对象
- Asset:相应的游戏对象音频源正在播放的音频资源
- Volume:音频源应用于音频的音量
- VU Level:VU Level 显示的是音频音量电平(音量强度),类似于你在混音器上看到的”音量表”。可用于判断:某个音频是否实际在播放、音量是否被设置为非常低、或是否被静音。为 0 则表示没有声音输出
- Audibility:音频播放的实际音量级别。这是音频源的音量与混音器通道应用的其他衰减量之和
- Group:该音频所属的 Audio Mixer Group,即 Unity 中音频的混音分组
- Priority:这是 Unity 用于管理音频播放资源(尤其在移动端设备声道有限的情况下)的播放优先级值(范围 0~256,数值越小表示优先级越高)。如果你发现某些音效”播放失败”或”被打断”,查看是否优先级过低。如果值高于 128,容易被系统剔除
- Plays:Unity 播放音频的次数
- Paused:如果音频在此帧中暂停,则显示 YES
- Muted:如果音频在此帧中已静音,则显示 YES
- Virtual:如果音频由于达到 Max Real Voice Count(最大真实语音数)(可以在音频项目设置 (Audio Project Settings) 中设置此属性)而暂停,则显示 YES。Max Real Voice Count 可以设置 Unity 同时播放的音频源的最大数量。如果此处显示 true,则 Unity 会对该帧中具有更高可听度或优先级的其他音频设置更高优先级。虚拟化后,音频不会被播放
- OneShot:如果 AudioSource.PlayOneShot() 播放了音频,则显示 YES
- Looped:如果 AudioSource.Play() 播放了音频,则显示 YES
- Distance:音频源到音频监听器 (AudioListener) 的距离
- MinDist:音频源曲线编辑器中定义的最小距离。此参数在音频周围定义一个球形区域;在该区域中,音量保持在恒定水平
- MaxDist:音频源曲线编辑器中定义的最大距离。此参数在音频周围定义一个球形区域;在该区域外,音量保持在恒定水平
- Time:音频播放中的当前相对时间。音频暂停播放时,此时间也会停止
- Duration:音频的长度(以秒为单位)
Audio对于我们的意义
音频虽然不像渲染那样直观,但它是游戏体验的重要组成部分。
Audio(音频)模块可以让我们:
- 看到当前有哪些声音正在播放
- 明确系统使用了多少音频资源
- 判断音频是否超出平台承受能力
这对音频逻辑正确性、音效设计、平台兼容性都至关重要。
我们可以通过它定位音频相关的性能问题:
- 声音卡顿、延迟:可以着重查看 DSP CPU 是否过高,音频处理性能不足
- 声音播放失败:检查 Playing Audio Sources(播放音频源)数量,是否达到系统上限
- 音频加载慢:查看 Streaming Load Time(流式加载),确认是否未预加载
- 音频占用太多内存:看 Total Audio Memory 和 Streaming 状态相关,分析未释放的资源
- 等等
13.2 知识点代码
Lesson13_Unity性能分析工具_Profiler窗口Audio.cs
public class Lesson13_Unity性能分析工具_Profiler窗口Audio
{
#region 知识点一 Audio是什么
/*
* Audio(音频)模块
* - 用来分析和监控音频系统的性能表现
* - 包括音频播放、混音、音量、CPU 占用等关键信息
*
* 在游戏中如果出现以下问题时,可以着重观察这里的内容:
* 1. 声音异常(音量小、失真、播放顺序错误等等)、缺失
* 2. 声音卡顿、延迟、音画不同步
* 3. 声音内存占用过高
* 等等
*
* 总结:几乎所有和音频相关的问题,我们都可以通过该模块进行排查
*/
#endregion
#region 知识点二 Audio中各参数功能的含义和作用
/*
* 界面参数功能:
* - 在思维导图中讲解
*/
#endregion
#region 知识点三 Audio对于我们的意义
/*
* Audio 模块的意义:
* - 音频虽然不像渲染那样直观,但它是游戏体验的重要组成部分
*
* Audio(音频)模块可以让我们:
* 1. 看到当前有哪些声音正在播放
* 2. 明确系统使用了多少音频资源
* 3. 判断音频是否超出平台承受能力
*
* 这对音频逻辑正确性、音效设计、平台兼容性都至关重要。
*
* 我们可以通过它定位音频相关的性能问题:
* 1. 声音卡顿、延迟:可以着重查看 DSP CPU 是否过高,音频处理性能不足
* 2. 声音播放失败:检查 Playing Audio Sources(播放音频源)数量,是否达到系统上限
* 3. 音频加载慢:查看 Streaming Load Time(流式加载),确认是否未预加载
* 4. 音频占用太多内存:看 Total Audio Memory 和 Streaming 状态相关,分析未释放的资源
* 等等
*/
#endregion
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com