沒想到Unity的音頻會成為內存殺手,在實際的商業項目中,音頻的優化必不可少。
1. Unity支持許多不同的音頻格式,但最終它將它們全部轉換為首選格式。音頻壓縮格式有PCM、ADPCM、Vorbis,不是所有平台都支持這些所有的壓縮格式,有些平台,例如WebGL只支持AAC格式。
2.所有音頻導入時,默認兩項設置,LoadType是"Decompress On Load",壓縮格式是“Vorbis”,例如下圖原始文件大小計算為35.9 MB,導入的大小計算為10.7 MB。這意味着這個音頻剪輯將使您的游戲(存檔)大小增加10兆字節,但播放它需要近36兆字節的RAM。
3.Load Type的各個選項
- Compressed In Memory – 音頻剪輯將存儲在RAM中,播放時將解壓縮,播放時不需要額外的存儲。
- Streaming –音頻永久存在設備上(硬盤或閃存上) ,播放流媒體方式. 不需要RAM進行存儲或播放。
- Decompress On Load – 未壓縮的音頻將存儲在RAM中。這個選項需要的內存最多,但是播放它不會像其他選項那樣需要太多的CPU電源。
怎么選?長音頻播放消耗大量內存,如果播放時不想在內存中進行解壓,有兩個選擇:
(1)Load Type選“Streaming”, Compression Format 選”Vorbis",使用最少的內存,但需要更多的CPU電量和硬盤I/O操作;
(2)Load Type選“Compressed In Memory”, Compression Format 選”Vorbis",磁盤I/O操作被替換成內存的消耗,請注意,要調整“Quaility”滑塊以減小壓縮剪輯的大小,以交換音質,一般推薦70%左右。
一般是看到底音樂占據多少內存以及你的目標機型是什么樣子的,如果音樂占據的內存本身比較高,你的目標機型的內存又比較小,那么就選擇第二種,這種方案會卡一點,否則選擇第一種就更好
4.聲音特效
(1)對於經常播放的和短的音頻剪輯,使用“Decompress On Load”和“PCM或ADPCM"壓縮格式。當選擇PCM時,不需要解壓縮,如果音頻剪輯很短,它將很快加載。你也可以使用ADPCM。它需要解壓,但解壓比Vorbis快得多。
(2)對於經常播放,中等大小的音頻剪輯使用”Compressed In Memory“和”ADPCM“壓縮格式,比原始PCM小3.5倍,解壓算法的CPU消耗量不會像vorbis消耗那么多CPU。
(3)對於很少播放並且長度比較短的聲音剪輯,使用”Compressed In Memory", ADPCM 這種壓縮格式,原因同(2)。
(4)對於很少播放中等大小的音頻,使用”Compressed In Memory“ 和Vorbis壓縮格式。這個音頻可能太長,無法使用adpcm存儲,播放太少,因此解壓縮所需的額外CPU電量不會太多。