这篇主要记录关于Unity内音频设置与音频优化的一些方法
Unity支持很多音频格式:
1.Mp3 :失真小,适合音质要求较高的文件。
2.WAV:资源大,不推荐。
3.OGG:压缩比高,适合人声和音效等。
先祭一张Unity音频的设置面板
根据上图的Unity音频设置面板先介绍下个选项的功能:
ForceToMono:如果启用,音频将向下混合成单声道,一般手机使用单声道足够满足需求。建议强制音效使用单声道,只有少数手机真的有立体声喇叭,最重要的是将音频强制设置为单声道可以让内存减半。
Normalize:当ForceToMono开启后选项可用,开启后音频将在ForceToMono的混合过程中被单位化。
LoadInBackground:后台加载,默认关闭。如果启用此选项这个音频将在一个单独的线程中延迟加载而不会阻塞主线程。
Ambisonic:是否是环绕声,对于360度视频和XR应用程序非常有效。如果AudioFile包含三维编码音频,则开启此项其余情况可关闭。
LoadType:
1.DeCompressOnLoad 加载后解压缩(适合小音效)
音频文件将在加载后立即解压缩,对较小的音效使用此选项可避免动态解压缩的性能开销。请注意在加载后解压缩Vorbis编码的声音,会使用它压缩时大约10倍的内存,ADPCM编码大约是3.5倍。所以请不要降此选项用于大文件。
2.CompressedInMemory 压缩在内存中(适合较大文件音效)
将声音压缩在内存中,在播放是解压缩。这个选项有轻微的性能开销(尤其是对于ogg/Vorbis压缩文件)所以只能用于大文件音效,因为在加载时解压缩会使用大量的内存。可在Profiler窗口的音频面板中的“DSP CPU”部分监视。
3.Streaming 流(适合大文件)
动态解码声音,此方法是使用最最小量的内存来缓冲从磁盘逐渐读取并在运行中解码的压缩数据。解压缩发生在单独的流线程上,请注意解压缩发生在Profiler窗口的音频面板中的"Streaming CPU" 部分中可监视其CPU使用率的单独流式线程上,即使没有加载任何饮品数据,流式片段也会有200KB的过载。
Preload Audio Data:预加载音频数据。如果启用音频剪辑将在场景加载时预先加载,也就是当场景开始播放时,所有的AudioClips已经完成了加载。如果没有开启,音频数据也会在第一次调用AudioSource.Play(),AudioSource.PlayOneShot()执行时被加载,或者也可以通过AudioSource.LoadAudioData(),AudioSource.UnLoadAudioData()再次加载时被加载。
Compression Format 压缩格式
1.PCM:这个选项提供了以更大的文件大小和代价提供了更高的质量,所以非常适合使用在很短的音效上面。
2.ADPCM:这个格式适用于需要大量使用的音效上面,比如脚步 爆破和子弹发射,他比PCM小3.5倍但是CPU使用于远低于Vorbis,所以适合多次调用的短音效。
3.Vorbis:比PCM小但是质量比PCM低,比ADPCM消耗更多而CPU。这种格式最适合中等长度的音效和音乐,这个选择多了个Quality可以调节质量改变文件大小1-100。
SampleRateSetting
PCM和ADPCM压缩格式允许自动优化或手动降低采样率
1.OptimizeSampleRate:该设置根据分析的最高频率内容自动优化采样率。
2.PreserveSampleRate:该设置保持比率未修改(默认)
3.OverrrideSampleRate:该设置允许手动覆盖采样率,优先选择22050HZ,如果音质不能接受就选择44100HZ,但是不允许高于44100HZ。
重点关注信息
OriginalSize:磁盘大小
ImportedSize:内存大小
Ratio:ImportedSize占OriginalSize比例
修改AudioClip属性之后记得点击Apply。如果一个MP3文件和压缩格式设置为PCM(未压缩),由此产生的Ratio的比例将超过100%,因为文件现在存储未压缩的空间比它来自于源MP3占据更多的空间。
总结:
统一要求
1.单声道:勾选ForceToMono,根据效果选择是否勾上Mormalize
2.自定义设置覆盖默认设置:勾选OverrideForAndroid/IOS。采样率(SampleRateSetting)设置为OverrideSampleRate,然后优先选择22050HZ,如果音质不能接受就选择44100HZ,不允许高于44100HZ。