Unity 音訊入門



遊戲強調音訊是有原因的;它對於增加遊戲的審美價值至關重要。從最早的Pong開始,人們就能聽到球輪流擊打球拍發出的嗶嗶聲。當時只是一個非常簡單的短正弦波樣本,但對於所有電子遊戲的鼻祖來說,你還想要什麼呢?

在現實生活中,許多因素會影響你感知聲音的方式;物體的速度,它所處的場景型別以及它來自哪個方向。

許多因素會導致遊戲引擎不必要的負載。相反,我們嘗試構思我們的聲音在遊戲中將如何運作,並以此為基礎進行構建。這在 3D 遊戲中尤其突出,因為需要處理 3 個軸。

在 Unity 中,我們擁有專用於音訊感知和播放的元件。這些元件協同工作,建立逼真的聲音系統,讓遊戲感覺自然。

Unity 為我們提供了許多有用的工具和效果,例如混響、多普勒效應、即時混音和效果等等。我們將在後續章節中學習這些內容。

音訊元件

在本節中,我們將學習與 Unity 中的音訊相關的三個主要元件。

AudioSource (音訊源)

AudioSource 元件是您附加到遊戲物件以使其播放聲音的主要元件。它會在透過混音器、透過程式碼或預設情況下在喚醒時觸發時播放AudioClip

AudioClip 只是一段載入到 AudioSource 中的音訊檔案。它可以是任何標準音頻檔案,例如 .mp3、.wav 等等。AudioClip 本身也是一個元件。

Audio Source

AudioListener (音訊監聽器)

AudioListener 是監聽場景中所有正在播放的音訊並將音訊傳輸到計算機揚聲器的元件。它就像遊戲的“耳朵”。你聽到的所有音訊都取決於此 AudioListener 的位置。場景中只能有一個 AudioListener 才能正常工作。預設情況下,主攝像機已附加了監聽器。監聽器沒有任何設計人員需要關心的公開屬性。

Audio Listener

音訊濾鏡

可以使用音訊濾鏡修改 AudioSource 的輸出或 AudioListener 的輸入。這些是特定元件,可以更改混響、合唱、過濾等等。每個特定的濾鏡都作為其自身的元件提供,具有公開值以調整其聲音。

Audio Filters

播放聲音

讓我們嘗試建立一個點選時播放聲音的按鈕。首先,我們將建立一個圓形精靈並將其設定為紅色。

Create a Circle sprite Button

現在,讓我們將音訊源附加到此精靈。

Attach an Audio Source Sprite

要使物件播放聲音,我們必須為其提供一個聲音。讓我們使用此音效。

http://www.orangefreesounds.com/ding-sfx/

下載音效,並將其拖放到“資源”資料夾中。

sound effect

當 Unity 將此資源匯入為聲音檔案時,它會自動轉換為AudioClip。因此,您可以直接將此音訊剪輯從“資源”資料夾拖放到我們精靈的音訊源中的“音訊剪輯”槽中。

AudioClip

將音訊剪輯從“資源”資料夾直接拖放到我們精靈音訊源的“音訊剪輯”槽中後,請記住取消選中音訊源屬性中的“在喚醒時播放”;否則,聲音會在遊戲開始時播放。

Play on Awake

現在,讓我們進入我們的程式碼。建立一個名為“BellSound”的新指令碼並開啟它。

BellSound

由於我們的音訊源透過程式碼控制,我們首先需要獲取對它的引用。我們將像以前一樣使用 GetComponent 方法。

public class BellSound : MonoBehaviour {
   AudioSource mySource;
   // Use this for initialization
   void Start () {
      mySource = GetComponent<AudioSource>();
}

現在,讓我們設定方法來檢測物件被點選。MonoBehaviour 為我們提供了我們需要的方法,名為 OnMouseDown。每當滑鼠點選該 gameObject 的碰撞器範圍內時,都會呼叫此方法。

由於我們尚未將碰撞器附加到我們的按鈕,讓我們現在這樣做。

attached a collider

我們不需要為此使用剛體;我們也不需要透過程式碼訪問此碰撞器。它只需要存在才能使該方法工作。

讓我們測試一下該方法是否有效。將以下程式碼寫入您的指令碼中,並將其附加到按鈕。

void OnMouseDown() {
   Debug.Log(“Clicked!”);
}

儲存指令碼並附加後,運行遊戲。點選按鈕應該會在控制檯中生成一條訊息。

spawn a message

您現在距離播放聲音只有一步之遙。您現在只需在 AudioSource 例項中呼叫Play方法。

void OnMouseDown() {
   mySource.Play();
}

儲存您的指令碼,並在遊戲中執行它。單擊按鈕,您應該會聽到聲音播放!

注意 - 考慮製作一個每次點選時音高都會升高的按鈕。使用mySource.pitch和一個計數器,看看你是否能解決這個問題。

廣告