音源組件(AudioSource)
音源是場景中在某個位置的發聲裝置,好像一個喇叭。它播放着音頻片段 (Audio Clip)。
發出的聲音將輸出到聲音監聽器(audio listener),或者聲音混淆器(audio mixer)。稍后再說混淆器,一般相機會默認自帶一個AudioListener組件,也就是說一個場景中,存在了默認相機的情況下,我們只要添加一個音源,設置了播放的音頻片段,就可以完成播放的操作,而對於聽到的聲音強弱和效果,則根據后續需要解釋的參數來決定。
音源可以播放任意類型的音頻片段(Audio Clip),它可以被配置為 2D音源、 3D音源或者2D、3D的混合形式(Spatial Blend,即空間混合,稍后會進行解釋)。
聲音可以通過多個揚聲器進行輸出,用於模擬立體聲 。(可以模擬出7.1聲道的立體聲,7.1聲道系統的作用簡單來說就是在聽者的周圍建立起一套前后聲場相對平衡的聲場) 。
聲音也可以在3D和2D之間進行空間混合變換,這種變換可以通過在距離上的衰減曲線來進行控制。另外,如果聲音監聽器(listener) 伴隨着一個或者多個回音區域(Reverb Zones), 音源將同時產生回音。
也可以對音源應用一些特殊的音頻濾波器來獲得更加豐富的音效體驗。具體解釋可以看音頻效果文檔( Audio Effects)。
AudioSource組件屬性參數:
屬性名稱: |
中文名稱: |
功能解釋: |
Audio Clip |
音頻片段 |
指向即將播放的音頻片段(Audio Clip)。 |
Output |
音源輸出 |
可以輸出到音頻監聽器(AudioListener)或者(AudioMixer)。當設置為空時,即代表輸出到AudioListener,而設置到AudioMixer時需要指定具體的AudioMixer。 |
Mute |
是否靜音 |
即音源在繼續播放,但是被靜音。與關閉音源的區別時,當恢復時,播放的進度不同。{對於游戲中音效的暫停最好使用這項,它不會卸載聲音數據,可以做到及時播放,音效一般比較多、占用內存小,使用靜音可以讓畫面快速響應,且可以立刻恢復當前音效,暫停音樂可以使用AudioSource的Pause、Stop或者GameObject的enable,一般不需要及時響應,此時可以使用Stop,它會卸載音頻數據節省內存。當然如果內存富余也可以使用其它方式,注意Mute跟其它方式的區別:Mute的音源在繼續播放着,只是聽不到而已,Pause是播放暫停,而Stop是完全停止,恢復時將從頭播放。} |
Bypass Effects |
音源濾波開關 |
是那些作用在當前音源的音頻濾波器的開關。{濾波器包括“高通濾波”、“低通濾波”、“回波濾波”、“扭曲濾波”、“回音濾波”、“和聲濾波”等,這些濾波器可以設置在音源或者監聽器上,勾選此項時,將使那些設置在音源的濾波器失效} |
Bypass Listener Effects |
監聽器濾波開關 |
是那些作用在當前監聽器的音頻濾波器的開關。{同上,勾選此項時,將使那些設置在監聽器的濾波器失效} |
Bypass Reverb Zones |
回音混淆開關 |
當勾選時,不執行回音混淆,即便現在玩家位於回音區域,此音源也不會產生回音。回音效果取決於監聽器位置(一般代表玩家位置)與回音區域位置關系,而與音源沒有直接關聯。詳細見“回音區域”章節。 |
Play On Awake |
啟動播放開關 |
如果勾選的話,那么當GameObject加載並啟用時,立刻播放音頻,即相當於此音源GameObject的組件中Awake方法作用時開始播放。如果不勾選的話,需要手動調用Play()方法執行播放。 |
Loop |
循環播放開關 |
當勾選時,如果音頻播放結束,將從頭開始再次循環播放。 |
Priority |
播放優先級 |
決定了當前音源在當前場景存在的所有音源中的播放優先級。(優先級: 0 = 最重要. 256 = 最不重要. 默認值 = 128.). 背景音樂最好使用0,避免它們有時被其它音源替換出去。{一般手機或者其它播放設備最多允許32個音源同時播放,這個優先級參數決定了在超出音源數目時,需要暫時關閉一些不重要的音源,優先播放更重要的音源} |
Volume |
音源音量 |
此音量代表了監聽器處於距離音源1米時的音量大小,代表了最大音量處的聲音大小。 |
Pitch |
音頻音調 |
代表了播放音頻時速度的變化量,默認值是1,代表了正常的播放速度。{當<1時,慢速播放,當>1時,快速播放,速度越快,則音調越高} |
Stereo Pan |
聲道占比 |
此數值在[-1,1]之間變化,代表了2D音源的左右聲道占比,默認值為0,代表左右聲道輸出同樣音量大小。{此數值針對2D音源或者2D、3D混合音源有效,純3D音源無效} |
Spatial Blend |
空間混合 |
此數值在[0,1]之間變化,指定當前音源是2D音源、3D音源,還是二者插值的復合音源,此參數決定了引擎作用在此音源上的3D效果的份量。 {主要影響“3D Sound Settings”屬性組中的參數表現,比如,如果是2D音源,聲音在距離上不衰減,也就沒有多普勒效果。無論2D、3D,與音頻濾波器不關聯。例如即便是純2D音源,它仍然響應回音區域,而濾波器的控制主要由相應的濾波參數和音源濾波混合參數決定,混合參數如前面講到的Bypass Effects、Bypass Listner Effects兩個開關以及后面講到的Reverb Zone Mix。 也就是說,此參數與“3D Sound Settings”屬性組中的3D音頻設置參數共同作用構成最終的輸出,而當純2D音源時,3D音頻設置將無視,純3D音源時,3D音頻設置得到完整輸出,非純情況則插值混合輸出。} |
Reverb Zone Mix |
回音混合 |
設置輸出到混響區域中的信號量,一般在[0,1]范圍內變化, 不過也允許額外最多放大10分貝(1 - 1.1]來增強聲音的遠近效果。{也就是說,回響效果的回響距離等很多復雜參數主要由回響濾波器實現,而回響音量大小主要由此因子來簡單控制} |
3D Sound Settings |
3D音頻設置 |
以下參數按比例與空間混合參數共同作用 |
Doppler Level |
多普勒等級 |
在[0,5]之間變化,默認值為1,決定了音源的多普勒效應的份量,如果設置為0,則沒有多普勒效應。{多普勒效應指的是當監聽器與音源之間發生相對運動時,聲音傳遞速度發生變化時的效果。 假設有一架飛機掠過上空,飛機上的警報器每個一秒鍾發出一次聲音,如果相對靜止,則聽到的效果是完整的每個一秒一次警報(盡管發出到聽到需要較長的時間,但是間隔應該是一樣的),而當飛機向我快速靠近時,由於距離在不斷縮短,從發聲到聽到的距離在不斷縮小,因此傳遞所化的時間越來越少,我方聽到的警報應該是越來越緊促,而非均勻的每秒一次,靠近速度越快,警報間隔越短。當飛機快速離去時,則情況恰好相反,警報聲音節奏越來越松緩。} |
Spread |
傳播角度 |
設置揚聲器空間的立體聲傳播角度。{好像稍稍影響了回音效果,其它暫時沒看出太大的影響,如果讀者有更詳細解釋請告知。} |
Min Distance |
最小距離 |
默認值為1米,代表了音量曲線中的最大音量位置。超越最小距離時,聲音將逐漸衰減。如果增大最小距離,則將相當於增大了3D世界中的聲音,因為最小距離以下的位置均獲得最大音量。如果減小最小距離,則相當於減小了3D世界中聲音。{因為由Volume參數可知,在曲線上1米處為最大音量,默認曲線<1米處均獲得最大音量,而當MinDistance<1時,默認曲線中X=1處的音量響應也會變小。注意上圖中Listener豎線代表了監聽器與當前音源的相對距離,而與Volume曲線的交點即是:1米處的最大音量經過3D世界距離傳播到當前位置而衰減后的音量大小,即如果在曲線上,1米處Y坐標是0.8,而Listener處Y坐標是0.4,那么最終音量是衰減了50%,此參數與Volume參數共同作用輸出最終音量大小,也即Volume*0.5} |
Max Distance |
最大距離 |
當超出此距離時,聲音將停止衰減。{注意這里是停止衰減,也就是說,后續更遠處聽到的聲音將保持在最大距離點的聲音大小,不代表聲音為0} |
Rolloff Mode |
衰減模式 |
代表了聲音在距離上的衰減速度, (具體衰減數值由曲線決定,X-距離,Y-衰減后剩余百分比). |
- Logarithmic Rolloff |
對數衰減曲線 | 預制的對數衰減曲線,可以修改。 |
- Linear Rolloff |
線性衰減曲線 | 預制的線性衰減曲線,可以修改。 |
- Custom Rolloff |
自定義衰減曲線 | 自定義的衰減曲線,完全手動設置。 |
音源可以設置的衰減曲線模型
距離曲線函數
以下聲音屬性可以通過距離曲線來修改,此處的距離是指音源和監聽器中的距離。
Volume: 振幅(0.0 - 1.0)在距離上的變化曲線。
Spatial Blend: 空間混合參數在距離上的變化曲線, 空間混合參數代表了2D音源-3D音源的插值,2D音源:原始的聲道匹配,3D音源:將當前所有聲道混合轉換成單聲道,在距離和方向上進行衰減。
Spread: 傳播角度在距離上的變化曲線(degrees 0.0 - 360.0)。
Low-Pass (只有當音源添加低通濾波器LowPassFilter時出現): 截斷頻率(22000.0–10.0) 在距離上的變化曲線。
Reverb Zone: 回音混合參數在距離上的變化曲線,注意振幅屬性、距離和方向上的衰減將被首先應用到信號,因此它們將同時影響到直接傳播的聲音信號和回音信號。
距離曲線函數,包括振幅(Volume)、空間混合(Spatial Blend)、傳播角度(Spread)、低通濾波器(Low-Pass audio filter)和回音混合(Reverb Zone Mix)。
上圖中當前監聽器到當前音源距離由紅色垂直線段標出。你可以通過直接編輯此曲線來改變此距離函數。如果編輯曲線,可以查看編輯曲線(Editing Curves)。
創建音源
如果音源沒有被賦予音頻片段(Audio Clip),那么它什么也不會做。音頻片段是指那些可以被播放的音頻文件。音源就像是一個播放器,可以通過它控制音頻片段的播放、停止和改變播放屬性。
新建音源的步驟:
- 導入音頻文件到你的Unity工程.它們就是音頻片段(Audio Clips)。
- 通過菜單:GameObject->Create Empty,創建一個空對象。
- 選中此GameObject,選擇Component->Audio->Audio Source來添加音源腳本組件。
- 在inspector面板中,將步驟1中的音頻片段賦給音源組件。
小技巧: 如果你想快速為某個音頻片段創建一個音源,你可以拖動這個音頻片段到某個GameObject的屬性面板(inspector)上,或者直接拖動到場景中任意位置,兩種情況下都將自動創建音源腳本。