創作內容

3 GP

Unity 交流作 - 2D平台遊戲(三) 音樂音效篇

作者:KK│2020-05-29 00:54:50│巴幣:6│人氣:3402

哈囉大家好,今天來介紹一下,在一個 Unity 專案中,音樂音效在裡面扮演的角色。
之前在音樂製作軟體 Bosca Ceoil 文章時我也提過,
由於我並沒有替專案量身訂做的程度,目前還沒有辦法從設計面去教學,
所以這篇會傾向於 Unity 中的實戰技巧。

本文開始



Unity 中要放入音樂作遊戲背景樂是一件簡單的事,



只要使用 AudioSource 這個腳本,就可以簡單的實現這個需求。

其中,Play on Awake 讓它能在遊戲運行時開始播放,Loop 則是循環的意思。
AudioClip 的欄位則可以吃,.aif.wav.mp3 還有 .ogg
另外也支援一些音軌模組如 .xm( Bosca Ceoil 可輸出)、.mod.it.s3m

那麼,這個聲音我們是怎麼去聽到的?
其實是有個名為 AudioListener 的接收器,上圖中有個 Output 欄位,
如果為空,他預設就會輸出到場景上的 AudioListener



當你今天隨便新增一個新場景時,Unity 會附一個 Main camera 給你,
同時上面會一併掛有 AudioListener

=> 值得注意的是,如果同時有多個 AudioListener 存在,就會看到下圖這樣。


Unity 會不停跳出訊息洗頻,請確保場景上只有一個 AudioListener


以一個播放背景音樂的需求來說,確實這樣就可以實現了。
頂多再補一個小 icon,讓玩家覺得音樂太吵或者聽不慣想靜音使用。

如果想再多一個音效,想要有兩種 BGM 依照場合切換使用,
雖然都可以用同樣方式添加,但作為管理確實相當不方便。
這個時候,我們就可以使用 Unity 提供的 AudioMixer



你可以在上面那層 Window > Audio 找到它,也可以用快捷鍵 Ctrl + 8



你可以創建很多個 Mixer  來管理,我這邊先使用一個作示範,命名 GameAudioMixer

右邊這邊就有不少資訊,稍微說明一下。
首先一開始沒有聲音時,這個值是停在 -80 分貝的位置,這可能會讓你感到疑惑?!
其實不要過於在意這個數字,那是因為 Unity 定義了 100% 功率最大輸出為 20 分貝,
無聲(靜音)則是 -80 分貝,而區間內的值各自代表它們相對的音量大小。

下面的 SSolo 獨奏,MMute 靜音,B 則是 Bypass 取消所有濾波器效果。
Attenuation 是衰減的意思,聲音是一種能量;一道聲音發出了,它會以漸衰的方式化為無。
它同時也是每個通道都具備的特性,但我們可以再額外新增一些音效處理;
在這個面版點一下右鍵,我們還可以設定這個通道前綴跟後綴的效果。



下面稍微帶幾個我覺得有趣的效果作介紹。

Send / Receive 可以讓你在不同的通道上發送、接收事件。
Lowpass 我們之前有提過的,低頻濾波器( 可以將一些刺耳的高音給濾掉 );
Highpass 則相反,可以將一些太低沉的音濾掉的高頻濾波器( 如果想特別突出曲子中重低音部分,也可以透過調整這個設定裡的參數來實現。)
Echo 是回音,可以玩出二重奏的效果。( 但是這個效果,放前綴跟後綴是一樣的,注意!)
Distortion 是失真的效果,可以透過參數讓曲子的一些細節不見、音跑掉(調最高時會爆音,注意!)
Chorus 是合聲效果,SFX Reverb 是會議室特效,聲波在一個空間中傳遞也有很多特性,像反彈。( 可以透過參數調整空間大小、反射率跟延遲,算是更複雜的回音效果。 )
......等,同一首曲子加上不同效果就能作出各種變化,沒列出來的就請自己試一試囉。

=> 就算不用這些效果,本身的參數 Pitch 音調速度就很好玩了!
調慢可以放作回憶時、勝利結算慢動作;調快則有點失真的感覺,壞掉的快轉機械音。

那麼有了 AudioMixer 後,我們就可以將某個音樂的輸出指向某個通道。



還記得前面提到的 Output 嗎?現在指派一個通道給它方便管理。

接下來讓我們稍微依照需求,添加一些通道出來,讓這個 Audio Mixer 的效用更清晰。
例如,我們可能需要有人聲,用來播放忍者、人型敵人或旁白的語音。
我們需要播放技能特效的聲音、場景音效和 UI 按鈕的聲音。
還有剛剛提到的,我們或許有第二個 BGM,可能開頭播放,可能 BOSS 戰可以用。



照著上述的需求新增一些通道進來

Master 作為主音量,所以是最上層的父層。
Voice 負責拿來播放語音,添加 Echo 效果,感覺有布袋戲的感覺!!
音效拆兩個通道來使用,一個是一般音效,一個專門給 UI 使用。
由於不希望讓玩家聽到太尖銳的聲音,所以使用了低頻濾波效果,
並且 UISound 再給它失真,讓它就像足了一個遊戲中 UI 該有的聲音。
這個時候可以在某些場合靜音,或者如上圖所示,劇情時只有 BGMVoiceSolo

=> 是的,Solo 雖為獨奏的意思,但可以多個通道同時獨奏。

Audio Mixer 是有樹狀結構的,所以假設想針對男生語音、女生語音、怪物語音拆成三部,
可以一起丟在 Voice 下,為了方便管理,當然 Sound 也可以依照各種音效再拆分,
這個時候 M 靜音就可以在某個場合變得很好用,直接讓整個群組靜音。

=> 聽起來,似乎通道越開越多越好,我們不能保證說不定未來會有更棒的需求;
那麼如果我一口氣開了 10 幾個通道,會有什麼影響嗎?

實驗這個問題,並在之後告訴你答案跟建議。


這是專案中 Moving Platform 這個場景,我掛上了音樂試著讓這關呈現不一樣的風貌。

猜猜看,這樣一個簡單的畫面,有多少開銷呢XD。
下面會用到 Unity 內建的 Profiler 分析器,幫我們對專案進行優化跟資源開銷分析;
若還不熟的就先看圖帶過就好,之後可能會再優化篇特別提一下這個工具。


點開 Profiler ,找一下 Audio 類別,看看它分析的一些資訊。

很不可思議吧!這樣一個小畫面就吃了 138 MB 的記憶體,
先來給大家看看這個畫面真正的模樣!!


我在每個方塊、移動磚、牆壁都掛上了音樂。

而且我上面還是使用非常小的音樂、音效,假設真如需求所說,
掛上一些高品質且曲子長度長的音樂,整個記憶體就會很吃緊,
算上一些貼圖、材質球、Shader,在低階配備上應該就可以閃退了( 嘿嘿 )。

那麼,你可能會覺得,沒有人會像這樣掛一堆音效在場景上的?!
回到開頭所說的 Audio Listener,其實 Unity 設計這個腳本,就是用來扮演玩家的耳朵。
來接收遊戲中的音樂,它之所以預設掛在鏡頭下,那是因為鏡頭是玩家看到的畫面;
在很多第一人稱的遊戲中,鏡頭可能就被設置在玩家的頭那個位置附近。

繼續說下去,假設這是一款恐怖遊戲,每一面牆都在發出怪聲,
當玩家走近時,聲音就嘎然而止,每一個方塊都此起彼落喊著「不要踩我」,
所踩的每一個移動磚,都會在玩家起跳時,發出怪聲嚇唬人......等。
配上原本的背景樂,利用玩家操控的忍者,與場景上這些物件的遠近,
進而控制該通道的聲音效果,不覺得很棒嗎XDDDD ( 雖然舉例滿滿惡趣味 )

最後


回到問題上,其實像這樣,"同時需要播放 12 個通道" 的需求是不常見的。
通道開得多,但不一定需要同時使用!!
因為這會讓玩家處在一個很吵的遊戲中,很像菜市場。
若真要恐怖,是否某些地方 BGM 就關起來,反而無聲勝有聲?
又或者其它離玩家還很遠的那些小碎音,另外作一個背景樂,
只有真的離玩家某個範圍內的,才真的出怪聲。
仔細思考看看,一定不用走到必用上全部通道同時播放這條路不可的。

我們應該還是試著做一下管理,透過替換 AudioClip 的方式達到最有效的利用。
另外真的逼不得已,減少記憶體消耗也是有其手段的,
例如將音樂的播放類型改為串流,或者不要一開始就將所有需要用的音樂都放在場上,
使用 Asset bundle 或者 Addressable 的方式來讀取音源檔。
但是!但是!
取決你的存放方法,取而代之的是,會有網路流量開銷( 網路下載資源的方式 ),
會有 CPU IO 的開銷 ( 為了讓專案容量再小一點,資源可能壓縮過,要解壓縮之類的 )。

而在專案的運行順利,遊戲的效能考量,與整體呈現的效果上作個平衡,
我覺得如果音樂音效的大大們,如果能先對這塊認知多一點,
在討論上,不論通道的新增調整,不同的場合上要搭配處理的效果,
也更方便開出相關需求給程式,這樣不是很棒嗎XD

篇幅有限、講得東西也較淺,
希望能對看到這篇文章的人有點幫助。
謝謝收看:)



閒聊:


結論上面不小心講完了,閒聊一下。
整篇讀完我好像會在 Unity 放音樂了耶!
可是最關鍵的音樂我就是沒有阿QQ
在看逾期大大直播 KGJ 時,有一句話說得直擊我心阿!
「沒有音樂的時候,就自己配阿!耶嘿!噗咻......嗶嗶嗶嗶蹦!」
連音效也行XDDD

有開發者配音的遊戲真的都滿有趣的,好像加分不少。
當然除了自己配音、製作音樂和編曲外,
其實還是有很多免費音樂是授權使用的,
魔王魂就是很多人都推薦的,可以用於商業用途、自由度很高的授權,
記得註明出處,還有不要對外說這首曲子是你做的。
有需要的話就逛逛吧!!

音樂畢竟也是遊戲中不可缺少的要素之一
繼續琢磨吧。

引用網址:https://home.gamer.com.tw/TrackBack.php?sn=4798271
All rights reserved. 版權所有,保留一切權利

相關創作

同標籤作品搜尋:Unity|AudioMixer

留言共 0 篇留言

我要留言提醒:您尚未登入,請先登入再留言

3喜歡★nigel0813 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:Defold 學習紀錄 ... 後一篇:我不會畫畫但是我想做遊戲...

追蹤私訊切換新版閱覽

作品資料夾

dhreekingdon幸運看見的你
給你一顆紅心~讓你能保有一整天的好心情~祝你有個愉快的一天喲(<ゝω・)~❤看更多我要大聲說4小時前


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】