音頻優(yōu)化之加載音頻

這是我在《Unity游戲優(yōu)化 (第2版)》看的,記錄一下~

藝術(shù)是一個非常主觀的領(lǐng)域,由個人的意見和偏好所支配
支持游戲藝術(shù)性的藝術(shù)資產(chǎn)背后的技術(shù)也是非常主觀的
Unity中有多種不同的資源類型

首先探索一下音頻文件

啥玩意是音頻文件?
少數(shù)音效或者單一背景音樂,或者數(shù)百萬行對話、音樂和環(huán)境音效等等

有啥問題呢?
運行時的音頻處理會造成CPU和內(nèi)存的消耗

為啥有這問題呢?
過度壓縮、或者過多的音頻操作、過多的活動音頻組件、低效的內(nèi)存存儲方法和訪問速度等等


將音頻文件導(dǎo)入Unity中

1.加載音頻文件
怎么加載音頻文件呢?
a.音頻文件就是一個二進制數(shù)據(jù)(打包之后)
b.加載音頻需要將其從硬盤拉入主內(nèi)存(RAM)
c.然后由音頻解碼器進行處理
d.最后將數(shù)據(jù)轉(zhuǎn)換為音頻信號,送到耳機或揚聲器

在unity中通過以下幾種設(shè)置可以指定音頻文件的加載方式:
1.Preload Audio Data
決定音頻數(shù)據(jù)是否在場景初始化期間自動加載,還是在以后加載

一般音頻文件的用法都是:
放在AudioSource組件中的audioClip屬性,將音頻文件包裝在AudioClip對象中,然后可以通過AudioSource的Play或者PlayOneShot方法觸發(fā)播放
這樣做會使得每個音頻文件都將在場景初始化期間加載到內(nèi)存中,因為場景包含對這些文件的即時引用,在需要這些文件之前必須先解析這些飲用(啟用了preload audioData)

如果禁用了preload audioData,就會導(dǎo)致unity在初始化場景期間跳過音頻資源的加載
會將加載活動推遲到需要使用的音頻文件時,也就是當(dāng)調(diào)用Play的時候

禁用后會加快場景的初始化,但第一次播放文件的時候,必須將阻塞主線程直至完成
如果資源文件過大,會導(dǎo)致時間過長,卡頓非常明顯,這是接受不了的
(也可以調(diào)用AudioClip.LoadAudioData()可以實現(xiàn)音頻加載)

2.Load In Background
決定是否在完成之前阻塞主線程,還是異步加載

如果禁用了preload audiData后,使用load in background選項
會將音頻加載改為異步加載,加載不會阻塞主線程
AudioCLip.LoadAudioData的調(diào)用會立即完成,可以通過loadState屬性查看當(dāng)前的加載狀態(tài)

如果開啟了 load inbackGround 而且在加載數(shù)據(jù)的情況下調(diào)用 AudioSource.Play()
unity仍然會在播放之間將文件加載到內(nèi)存中,會導(dǎo)致Play和音頻文件實際開始播放之間會有延遲

3.LoadType
定義了將什么類型的數(shù)據(jù)拉入內(nèi)存,以及一次拉多少內(nèi)存

有3種選擇
a.Decompress On Load
設(shè)置壓縮磁盤上的文件節(jié)省空間,在首次加載的時候?qū)⑵浣鈮旱絻?nèi)存中
是大部分情況使用的標(biāo)準(zhǔn)方法
缺點就是解壓文件需要一定時間,導(dǎo)致加載過程中的額外開銷

b.Compress In Memory
加載音頻時只是將其直接從磁盤復(fù)制到內(nèi)存中
只有播放音頻文件時,才會在運行期間對其進行解壓縮
會導(dǎo)致播放音頻文件時消耗更多的CPU,但是提高了加載速度,減少了運行時內(nèi)存消耗
(適合頻繁使用的大型音頻文件)

c.Streaming
將在運行時加載、解碼和播放文件
逐步將文件推過一個小緩沖區(qū),在緩沖區(qū)中一次只存在整個文件的一小部分數(shù)據(jù)
會導(dǎo)致運行時CPU開銷最大,但是內(nèi)存使用最少

每個文件的回放實例都需要生成自己的緩沖區(qū),如果多次引用音頻文件
會導(dǎo)致內(nèi)存中同一音頻文件的多個副本必須單獨處理,不能胡亂使用

使用定期播放的單實例音頻剪輯,不需要與自身的其他實例甚至于其他的流式音頻剪輯重疊
(最好與背景音樂和背景音效因其使用,這些音效需要在場景里的大多數(shù)時間里播放)


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容