13.Profiler窗口Audio

13.Unity性能分析工具-Profiler窗口Audio


13.1 知识点

Audio是什么

Audio(音频)模块是用来分析和监控音频系统的性能表现的,包括音频播放、混音、音量、CPU 占用等关键信息。

在游戏中如果出现以下问题时,可以着重观察这里的内容:

  1. 声音异常(音量小、失真、播放顺序错误等等)、缺失
  2. 声音卡顿、延迟、音画不同步
  3. 声音内存占用过高
  4. 等等

总之,几乎所有和音频相关的问题,我们都可以通过该模块进行排查。

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(音频)模块可以让我们:

  1. 看到当前有哪些声音正在播放
  2. 明确系统使用了多少音频资源
  3. 判断音频是否超出平台承受能力

这对音频逻辑正确性、音效设计、平台兼容性都至关重要。

我们可以通过它定位音频相关的性能问题:

  1. 声音卡顿、延迟:可以着重查看 DSP CPU 是否过高,音频处理性能不足
  2. 声音播放失败:检查 Playing Audio Sources(播放音频源)数量,是否达到系统上限
  3. 音频加载慢:查看 Streaming Load Time(流式加载),确认是否未预加载
  4. 音频占用太多内存:看 Total Audio Memory 和 Streaming 状态相关,分析未释放的资源
  5. 等等

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

×

喜欢就点赞,疼爱就打赏