一、Unity 支持音效格式
常用的為 .mp3, .ogg, .wav
.wav 適用於較短的音效
.mp3 適用於較長的音效
.ogg 適用於較長的音效
下面以一個 .mp3 音效拖到Project 下,然後選中該音效,在Inspector面板顯示其屬性
Load Type:
DecompressOnLoad : 音效文件加載後為解壓縮狀態,好處是耗費CPU少。
CompressedInMemory :音效文件在內存中保持壓縮狀態,佔用內存少,但是耗費CPU,當使用該音效時首先要CPU對其進行解壓,然後才能使用。
Streaming : 當播放該音效時,從磁盤以流的形式加載音效數據,好處,佔用內存最少,因為只有很少的緩衝數據佔用內存。
二、播放音效
首先確認場景中有且只有一個對象掛載了 Audio Listerer 組件(一般攝像機上默認掛載一個)。
然後創建一個對象,添加 AudioSource 組件,將音效拖拽到 AudioClip 參數上,如下圖
選中 Play On Awake(開始即播放)
運行遊戲,即可聽到播放的音效
下面先介紹一些 AudioSource 的一些常用參數
(1)Output 音效混合器
(2)Play On Awake 運行開始立即播放
(3)Loop 是否循環播放
(4)Priority 播放優先權(0 - 255),數值越小,優先級別越高
(5)Volume 播放音量
(6)Pitch 音高,默認為 1,大於1時提高音高,並且會加快播放速度,小於1,降低音高,減慢播放速度,但是數值偏離 1越大,越偏離原始聲音
(7)Stereo Pan 立體聲,默認為 0,當值為 -1時,只有左聲道響,當值為 1時,只有右聲道有聲音
(8)Spatial Blend 當值為 0時為 2D音效,當值為 1 時為 3D音效
(9)Volume Rolloff 即隨著和AudioLister 的距離變化,聽到的音量變化曲線
(10)in Distance 當距離超過該數值時,聲音開始衰減
(11) Max Distance 當距離超過該數值時,音量衰減為 0
三、通過代碼控制播放以及上面所有參數的控制
一般不會使用直接將 音效拖拽到 AudioSource 的AudioClip參數上,因為那樣做不利於管理,並且它會在 對象生成的時候立即加載音效到內存,並且不會釋放。音效過多或是音效過大時相當耗費內存。 所以要對音效進行動態加載
音效混合器原理:
一、創建 AudioMixer
二、使用
Master 拖拽到一個AudioSource 組件的 Output 參數上
運行,播放音效,選中 AudioMixerDemo 在Inspectr 面板點擊 Open,彈出面板如下
既然是音效混合器,一個音效混合是沒有意義的,賦值幾個掛載 AudioSource 組件的對象,分別拖上不同的音效,這樣,幾個 AudioSource 公用一個 Master,才會達到幾種不同音效混合的效果,一般情況下一個音效混合組(AudioMixerGroup)是不夠的,下面添加多個 AudioMixerGroup
(1) 點擊 Groups 右邊的 “+”
(2)選中一個 Master 然後點擊 + 將會給其添加一個子 AudioMixerGroup,即需要給誰添加子 AudioMixerGroup,就選中誰,然後點擊 +,這些AudioMixerGroup是可以嵌套的
(3)此時回到 Project面板會發現多了兩項 A,B
(4)再次運行程序,打開 AudioMixer
會看到 視圖發生了變化,有三個顯示音效變化的視圖了,分別是 Master、A、B
(5)選擇 A 然後點擊 A 下面的 S 按鈕,將停止除自己以外的其他音效的播放,結果為 B的播放將停止如下
選擇 A 然後點擊 A 下面的 M 按鈕,結果 A 自身停止播放
三、開始編輯每一個 AudioMixerGroup
點擊 AudioMixer 面板的 Editor in Play Mode 這樣我們在運行狀態下編輯的 Group,在停止運行時將保存
下面簡單說幾個效果的作用
選中一個 AudioMixerGroup 添加效果,有兩種方法
或者下面方法
(1)Send 會將這個Group 的信號傳遞出去
(2)Receive 接收其他 Group 發出的信號
下面給 A 添加一個Send, 給B添加一個Receive
解決上面警告方法就是在 A 的Send 處設置接收者,即設置 B的Receive為接收者
這樣A 發送的信號,B就能接受到了
(3)Duck Volume ,接收其他Group發送的信號,改變自己的一些屬性,比如音量大小。
下面給 A 添加 Duck Volume ,給 B 添加 Send,將B的Send的接收者設置為 A 的 DuckVolume
然後設置A 的 Duck Volume 的一些屬性,當該 Duck Volume 接收到 B Send 過來的信號,將改變自身的一些屬性
比如當 播放 B Group 聲音時,讓A Group聲音減小,就可以設置 A Duck Volume 的 Make -Up Gain 數值為 負數
(4) Low Pass 低通濾波器,即只允許低頻率的音效播放出來,而高頻率的音效不播放出來
(5)High Pass 高通濾波器,即只允許高頻率的音效播放出來,而低頻率的音效不播放出來
(6)Echo 回聲,即添加該效果,該 Grop 播放的聲音將會產生迴音
(7)Flang鑲邊效果,用來產生奇怪的音效
下面還有好多,不一一列舉,自己嘗試即可。
閱讀更多 胡正偉音樂 的文章