? ? ? ?音樂音效對于游戲來說是必不可少的一環(huán),大部分游戲都有音樂音效開關,5.0之前,大部分游戲開發(fā)者都是用代碼控制音樂與音效的開關。5.0之后unity加入了AudioMixer混音器系統,使得做法更加簡單。?
? ? ? ? AudioMixer功能很多也很強大,我們在這里只用它一部分的功能,控制整個游戲的音樂音效的開關以及大小,同時對音樂文件進行優(yōu)化,減少包體大小。
? ? ? ? 首先我們來看一下unity支持的音樂文件,一般背景音樂建議使用.mp3與.ogg,而音效則可以使用.aiff,一般我會使用一些工具來壓縮截取和改變音樂格式來供游戲使用,兩個輕量級的工具MAC:Sound Studio,PC:gold wave。

? ? ? ? AudioMixer意為混音器,我們將其作為開關的原理就是將所有音樂放入同一音軌,需要關閉只需要對這個音軌進行操作就行。
一.首先右鍵Assets創(chuàng)建AudioMixer對象。

? ? ? ?可以這么簡單的理解,一個AudioMixer就是一個音樂開關,游戲內,我使用了兩個AudioMixer,一個用作管理背景音樂,一個用作管理音效。創(chuàng)建好的AudioMixer如下圖。

二.掛載AudioMixer。
? ? ? ?游戲內創(chuàng)建AudioSource后,將其Output掛載上剛剛我們創(chuàng)建好的AudioMixer。當前AudioSource受AudioMixer影響。

三.AudioMixer提供外部參數
? ? ? ?如圖,在AudioMixer設置界面,點擊Exposed Parameters 輸入參數,以便腳本控制當前音軌。

四.代碼控制開關
? ? ?首先腳本中獲取到所需要更改的AudioMixer, ?調用剛剛設置好的外部參數,腳本如下:
AudioMixer.SetFloat("VolumeMaster",0.0f);//聲音開
AudioMixer.SetFloat("VolumeMaster",-100.0f);//聲音關
其實可以看出,其實我們聲音開關只是將這條音軌的音量降低。
五.優(yōu)化音樂文件大小

取消勾選preload audio data選項,勾選安卓環(huán)境下的override for andriod選項,并設置load type為streaming。
* 這里禁用的預加載音頻preload audio data,減少加載時間。設置load type為streaming,音頻剪輯將放入緩沖區(qū),從緩沖區(qū)中播放,播放完成后,被卸載,釋放內存。
也可以將使用頻繁的音頻設置load type為decompress on load,在加載時解壓,這樣會更流暢一些,當然只是用于頻繁使用的音頻即可。
之前項目音樂文件沒優(yōu)化,光音樂內存就占了50M,優(yōu)化后小了幾十倍- -