开发人员通常不完全了解将声音导入Unity的选项,在撰写本文时,我找不到有关其使用的单个详细指南。
Unity文档很好地描述了声音导入选项的作用,但我想解析这些描述以吸引更多的读者,并更详细地说明如何应用这些参数以充分利用游戏。
本文档分为五个部分:
- 声音如何影响性能
- 我们处理进口选择
- 我对PC和控制台的推荐设置
- 我推荐的移动平台设置
- 注意事项和注意事项
优化Unity声音导入选项是最简单的优化方法之一。 对于小型项目,可能需要不到一个小时的时间才能在启动时间,RAM和其他性能方面取得显着改善。 希望本指南对您有所帮助。 信息与Unity 2018.3版本相关
1.声音如何影响演奏
声音数据很多。 在许多游戏中,音频数据占据磁盘空间(存储游戏数据的磁盘/盒式磁带/光盘)和RAM(系统工作内存)的最大份额。 不仅如此,它们还会严重地给CPU加载,特别是如果您使用DSP(实时声音处理)的效果时,还会大大增加加载时间。
在这三个区域(RAM占用的磁盘空间,CPU使用率)中,优化是一次三方拉锯战,类似于
“价格便宜”的问题。 如果游戏的任何方面对您造成最大的损害,您可以通过牺牲另一个方面来维持一个方面的有效性。 例如,如果未压缩的声音占用了过多的RAM,则可以将其以Vorbis压缩形式存储-这样可以节省RAM的空间,但要以CPU负载为代价,因为访问压缩文件需要更多的处理能力才能对其进行解码。 以下是带有各种参数及其对这三个区域的影响的图表:
值得考虑的是,该图没有告诉我们有关从磁盘/ RAM读取的数据带宽的任何信息。
实际上,还有一些细微差别,但是该图应该使您大致了解这些问题是如何互连的。 要了解如何使用这些参数(并处理诸如加载时间过长的问题),您需要详细考虑每个声音导入选项。
2.了解导入选项
当您在Unity编辑器中选择AudioClip时,以下面板将显示在检查器窗口中:
下面是从上到下的声音选项列表,并说明了它们的作用:
强制单声道
- 是:如果AudioClip以立体声录制(或使用不同数量的声道),则此参数将所有声道合并为一个单声道。
- 否:通道数不变。
在做声音设计师的过程中,我从来不会将音频信号降低为单声道,因为我会为特定目的创建声音。 但是,如果您使用股票的标准声音并希望启用此选项,请确保由于左右声道之间的界面交互,单声道文件听起来不会平坦而奇怪。 您可以通过单击检查器窗口右下角的“播放”按钮来预览处理后的声音-如果听到相位失真,则可以尝试在第三方音频编辑器中分离声音,并将左右声道分别导出为单声道声音。
规范化(仅在“强制启用单声道”时可用)
- 是:调整AudioClip的增益,以使单声道声音具有与原始立体声文件相同的音量。
- 否:不调整增益。
如果您使用Force to Mono,通常值得启用标准化。 当混音到单声道时,较大的立体声文件会变得更大,超过最大幅度并导致尖锐的数字失真,这是不希望的。
后台加载/预加载音频数据
这些参数相互之间有直接的影响,因此我将它们组合在一起。
在后台加载 | 预加载音频数据 | 结果 |
---|
已启用 | 已启用 | 加载场景时,具有此参数的声音片段开始加载,但不停止主流。 如果到场景完全加载时还没有全部加载,那么当场景已经运行时,下载将在后台继续。 如果未加载声音,但声音已经在运行,则其行为与“禁用预加载”时相同(请参见下一行)。 |
已启用 | 残障人士 | 声音首次启动时,它将在后台加载并在准备就绪时播放。 如果文件很大,则开始和播放之间可能会有明显的延迟,但是随后播放文件时,一切都会好起来的。 |
残障人士 | 已启用 | 加载场景时会加载声音。 直到打开此参数的所有声音都载入内存,场景才会开始。 |
残障人士 | 残障人士 | 首次启动声音时,它将使用主流将自身加载到内存中-如果文件很大,则可能会导致帧变慢,但在随后的复制中,一切都会正常进行。
我建议仅对很小的文件使用此配置,但是即使在这种情况下,也值得在探查器中测量其对性能的影响,并考虑是否可以同时发出大量此类声音,从而增加性能负担。 |
立体声
- 如果声音是Ambisonic编码的,请选中此框。 立体声声音对VR,AR,全景视频等有用,但是此参数与我们的手册无关。
平台特定选项
- 这些选项卡允许您为以下列出的设置设置默认参数和特定于平台的参数。 某些平台具有其他平台上不可用的压缩格式;某些平台可能具有需要不同优化的其他设备。 有关特定于平台的压缩,请参见以下注释。
- 即使您要使用公共参数,也要始终检查平台特定的参数-有时Unity可以自动设置平台特定的参数。 例如,iOS的内部版本可能默认为“指定采样率:22kHz”,这可能导致混叠(由不正确的下采样引起的声音缺陷)。
负载类型
- 加载时解压缩:声音以指定的压缩格式存储在磁盘上,但被解压缩并加载到未以PCM格式压缩的RAM中。 这会占用大量RAM,并会稍微增加启动时间,但是从处理器的角度来看,这是非常便宜的,并且访问速度非常快。
- 在内存中压缩:在磁盘和RAM中,声音都以指定的压缩格式存储。 减少了在RAM中占用的位置和加载时间,但是在声音的再现过程中,处理器的负载增加了,因为在每次再现时都必须拆开包装。
- 流:流音频直接从光盘播放,完全绕过RAM。 这占用了磁盘带宽和CPU资源的一部分,但是在PC和控制台上,如果同时传输的声音不超过两个,则不会显着影响性能。 在移动平台上(尤其是在便宜的和旧的设备上),多个立体声文件的同时流式处理会给处理器带来沉重的负担(请参阅下面的“注意”部分)。
压缩格式
- PCM:原始音频数据,已完全解压缩,并在磁盘和RAM中占据了大量空间,但是播放它实际上不需要任何成本,因为不需要解压缩。
- ADPCM:一种非常老的压缩格式,压缩比为3.5:1。 与Vorbis或其他压缩格式相比,压缩/解压缩是相当便宜的,但是会在声音中引入数字噪音,因此您只需要在“嘈杂的声音”中使用它就不会引起注意。 如果不确定ADPCM是否适合任何特定的声音,请启用PCM和ADPCM格式的声音预听-如果听到不同,建议选择PCM。
- Vorbis:一种与大多数流行平台兼容的压缩格式。 它可以提供足够高的压缩率,同时保持良好的音质,但是即时压缩和解压缩非常昂贵。
我在这里只列出了标准编辑器格式,有关特定于平台的类型和压缩的更多信息,请参见下面的“备注”部分。
这是在Unity编辑器中PC上不同格式的处理器负载的简要比较:
压缩格式 | 1票的CPU使用率 | CPU使用情况(6票) |
---|
PCM | 〜0.05% | 〜0.3% |
ADPCM(在内存中压缩) | 〜0.2% | 〜1.0% |
Vorbis(在内存中压缩) | 〜0.5% | 〜3.2% |
质量(不适用于PCM / ADPCM)
- 70%至100%:除了发烧友以外,所有其他人都无法通过昂贵的音频设备将PCM与PCM完全区别
- 1-69%:变化的质量水平,较低的值会产生强烈的排斥噪声,降低动力,并使声音平整无生气。 您可以单击检查器面板中的“预览”按钮以查看每种特定声音的质量下降得如何明显。
这些质量参数意味着声音将以100%的速度再现,因此它们会切断通常不在可听范围内的某些高频。 但是,当演奏速度降低时,它们会移入可听范围。 如果您打算以较低的音调/速度再现声音,则最好选择PCM中的编码。
质量越低,文件压缩越强:
Vorbis质量 | 原始尺寸的百分比 | 压缩比 |
---|
100 | 〜20% | 〜5:1 |
75 | 〜10% | 〜10:1 |
50 | 〜7% | 〜14:1 |
25 | 〜4% | 〜25:1 |
1个 | 〜2% | 〜50:1 |
采样率设置
- 保留:使用记录声音的采样率。
- 优化:Unity分析声音并找到其最大频率,然后使用奈奎斯特定理确定可以应用的最小采样频率,而不会损失这些频率。 例如,如果最大声音频率为10 kHz,则可以将采样频率降低到20 kHz,而不会损失声音。 此参数只能用于PCM / ADPCM。
- 覆盖:如果需要,您可以为AudioClip手动设置新的采样率。 通常,如果您不了解这样做会导致什么,则不建议您这样做。
3. PC和控制台的推荐设置
声音类型 | 在后台加载
| 负载类型 | 预加载音频数据 | 压缩格式 | 质素 | 采样率设定 | 备注 |
---|
对话对话 | ÿ | 压缩在内存中 | ÿ | 沃比斯 | 70 | 保留 | |
长时间的环境声音循环 | 不适用 | 流媒体 | 不适用 | 沃比斯 | 70 | 保留 | |
一次性环绕声 | ÿ | 负载解压缩 | ÿ | 沃比斯 | 70 | 保留 | |
噪音影响 | ñ | 压缩在内存中 | ÿ | PCM | 不适用 | 优化 | 如果这些声音的音调已经下降,则必须保持采样频率。
|
脚步声 | ñ | 压缩在内存中 | ÿ | PCM | 不适用 | 优化 | |
音乐(长歌) | 不适用 | 流媒体 | 不适用 | 沃比斯 | 85 | 保留 | 如果同时播放多个音乐曲目,则流媒体可能不合适 |
音乐(简短摘要) | ÿ | 压缩在内存中 | ÿ | 沃比斯 | 85 | 保留
| |
非对话声音
| ÿ
| 负载解压缩
| ÿ
| 沃比斯
| 70
| 保留
| |
特殊效果(短音)
| ñ
| 压缩在内存中
| ÿ
| PCM
| 不适用
| 优化
| 如果这些声音的音调已经下降,则必须保持采样频率。
|
特效(长)
| ñ
| 负载解压缩
| ÿ
| 沃比斯
| 70
| 保留
| |
UI声音(长)
| ÿ
| 负载解压缩
| ÿ
| 沃比斯
| 70
| 保留
| |
UI声音(简短)
| ñ
| 压缩在内存中
| ÿ
| PCM
| 不适用
| 优化
| |
这些建议适用于声音剪辑多达一万个的游戏。 对于大多数声音,我建议在“加载时解压缩”,也就是说,它们将作为解压缩的音频数据存储在RAM中。 如果解压缩的声音文件的总大小大于您对RAM施加的限制,则对于最长的文件,可以选择“压缩的内存”参数。 但是请记住,每次发出这样的声音,CPU负载都会略有增加。
这些表格的PDF版本可以从此处下载 。
4.移动平台的推荐设置
声音类型
| 在后台加载
| 负载类型
| 预加载音频数据
| 压缩格式
| 质素
| 采样率设置
| 备注
|
---|
对话对话
| ÿ
| 压缩在内存中
| ÿ
| Vorbis / MP3
| 50
| 保留
| |
长时间的环境声音循环
| ÿ
| 压缩在内存中
| ÿ
| 沃比斯
| 35
| 保留
| 对于没有噪音的声音,请使用更高的质量。
|
一次性环绕声
| ÿ
| 负载解压缩
| ÿ
| Vorbis / MP3
| 50
| 保留
| |
噪音影响
| ñ
| 压缩在内存中
| ÿ
| PCM / ADPCM *
| 不适用
| 保留
| |
脚步声
| ñ
| 压缩在内存中
| ÿ
| PCM / ADPCM *
| 不适用
| 优化
| |
音乐(长歌)
| 不适用
| 流媒体
| 不适用
| 沃比斯
| 70
| 保留
| 请参阅下面的流式警告。 |
音乐(简短摘要)
| ÿ
| 压缩在内存中
| ÿ
| Vorbis / MP3
| 70
| 保留
| |
非对话声音
| ÿ
| 负载解压缩
| ÿ
| Vorbis / MP3
| 50
| 保留
| |
特殊效果(短音)
| ñ
| 压缩在内存中
| ÿ
| PCM / ADPCM *
| 不适用
| 优化
| 如果这些声音的音调已经下降,则必须保持采样频率。
|
特效(长)
| ñ
| 负载解压缩
| ÿ
| Vorbis / MP3
| 50
| 保留
| |
UI声音(长)
| ÿ
| 负载解压缩
| ÿ
| Vorbis / MP3
| 50
| 保留
| |
UI声音(简短)
| ñ
| 压缩在内存中
| ÿ
| PCM / ADPCM *
| 不适用
| 优化
| |
*如果您不知道选择什么,是PCM还是ADPCM,则请参阅上面
“理解参数”部分中对
ADPCM格式的描述。 如果仍然急需节省磁盘空间,则建议使用PCM。
这些准则将在大多数手机游戏中很好地发挥作用。 至少它们可以用作起点。 如果您认为这些参数可能不适合您的游戏,请阅读上面的完整参数说明。
这些表格的PDF版本可在此处下载。5.注意事项
警告事项
- 多个音频文件的同时流式传输(Streaming)表示PC和控制台中处理器的负载相当小,但在移动平台上(尤其是在廉价或旧设备上)会造成严重问题。 下面是我在Unity事件探查器中测量的图形。 它评估了在多个Samsung Galaxy手机和我的PC上流式传输多个音频文件的影响。 第一张图显示了1-12个同时复制的音频源,第二张图显示了放大的1-3个源。
- 如果将声音设置为“在加载时解压缩”,则使用Vorbis压缩将在磁盘上将其大小减小十倍,但在RAM上却不会减小十倍,RAM仍将存储原始PCM数据。 如果设置“压缩在内存中”参数,则可以节省RAM,但要以占用CPU时间为代价,这会即时解压缩声音。
- 默认情况下,每种数据类型(流技术除外)都将声音加载到RAM中,然后将其保留在那里,直到场景被卸载为止。 如果整个游戏是在一个大舞台上进行的,那么声音可以填满所有可用的RAM。 更糟糕的是,从RAM中手动删除音频剪辑效率极低,并且可能导致帧速率下降,如果将此任务分配给垃圾收集器,则可能会发生这种情况。 如果您有大量音频数据,则可能需要执行优化以减少使用Unity AssetBundles的其他区域使用的RAM。 “预加载音频数据”参数也不能更改此设置,因为它仅确定何时将数据加载到RAM中,而不确定随后的操作。
- 如果目标平台支持MP3格式,请注意,不会对其执行自动循环,因此不建议将MP3压缩用于大气循环和音乐循环。 由于MP3编码的性质,通常没有声音的片段会添加到文件的末尾,因此样本总数被平均分为1,152个样本的“帧”。 有多种方法可以创建无缝的MP3循环,但这是另一本指南的主题。
- 当您关闭“预加载音频数据”并打开“在后台加载”时,大文件将不会立即播放,但是处理器负载不会增加。 这是因为下载需要花费时间,但是在这种情况下主线程不是空闲的。
- 禁用“预加载音频数据”并禁用“后台加载”时,第一个调用中的大文件将占据主流。 但是,使用FMOD在单独的流中执行解码时,这不是问题。
备注
压缩格式:- 将文件导入Unity时,它们应始终为未压缩格式,例如WAVE(.wav)或AIFF(.aiff)。 许多压缩格式是有损格式,也就是说,在对它们进行编码时,信息会丢失。 如果您将压缩文件(例如MP3或Vorbis)导入Unity,则Unity会先将其解码为未压缩的格式,然后将其重新编码为您选择的格式,即使这与开始时的格式相同。 这会增加新的压缩伪像,这通常是不希望的。
- AudioKinetic Wwise中间件文档中有一篇很棒的文章,介绍了各种声音压缩格式,它们的优缺点和支持的平台。
- 如果使用FMOD,则可以访问其FADPCM格式,该格式比旧的ADPCM格式要好得多。 但是,它不是内置于Unity中。
- 例如,您可能希望在iPhone上使用MP3而不是Vorbis,因为它具有硬件MP3解码器,该解码器使处理器无法解压缩RAM或磁盘上存储的MP3文件。 但是要小心-这可能不适合循环播放声音(请参见上面的“注意事项”部分); 此外,它一次只能解码一个MP3。 如果您需要同时打开多个MP3的包装,则该操作将以编程方式执行,就像Vorbis一样。 这应该不会带来任何严重的问题,但是值得注意的是,MP3解码比Vorbis解码对处理器的负担更大。
- 如果目标平台是Playstation 4,则ATRAC9格式可提供比Vorbis或MP3更高的压缩率,并具有较少的CPU负载。
- Xbox One Vorbis MP3 Microsoft XMA. Microsoft 8:1 15:1.
:- PCM ( ) Compressed in Memory. Decompress on Load , , Streaming.
- , FMOD Wwise , Unity ( - ).
- « » (Foley), , , . , . , , .
- (Sample Rate), Unity . , 100%, Optimise Sample Rate, / , . , , .