關於Unity中3D聲音的使用


3D聲音

3D立體聲和2D聲不同的地方是它是會隨着距離衰減的,距離越近聲音越大,距離越遠聲音越小。

1: 聲音: 背景音樂和音效;

2: 聲音文件支持的格式: ogg, mp3, wave, AIFF;

  ogg比較流行,很多安卓里面的聲音使用ogg的格式是為了繞開mp3的版權

  ogg和mp3都比較常用

  wave和ogg、mp3比起來比較大,沒有壓縮的數字音樂,可以直接寫到聲卡里面

3:音頻管理器: Edit-->ProjectSetting--> Audio;和物理引擎一樣有管理器

   Global Volume: 全局播放的音量;

   Volume Rolloff Scale: 衰減因子,越大,聲音衰減越快;

   Doppler Factor: 多普勒因子;模擬多普勒效應的監聽效果:0關閉, 1 高速物體的多普勒效應會比較明顯的監聽的到;

   Default Speak Mode: 設置揚聲器模式;默認值為2(立體聲, AudioSpeakModer); stereo立體聲

   System Sample Rate: (輸出采樣率);

   DSP Buffer Size: 調整DSP緩沖區大小優化延遲和性能;越大效果越好

   Max Virutal/Real Voices Count: 同時播放的真實聲音的數量;虛擬的聲音最后會和其他的聲音混合在一起,所以比真實的聲音多。

   Disable Unity Audio: 是否使用音頻;

 

 

音頻監聽器

類似於人的耳朵,把耳朵移動到哪里,就可以聽到那里附近的聲音,也可以比喻為話筒。如果場景中沒有音頻監聽器,那么玩家是聽不到聲音的,即使那個物體正在發聲。

1: 音頻監聽器在3D世界中扮演話筒的角色,他接受場景中輸入的音頻源,通過設備的揚聲器來播放聲音;

2: 當一個音頻監聽器掛載到場景中的一個游戲對象上,任何音源如果接近音頻監聽器,都會輸出到計算機的揚聲器中,每個場景中只能有一個音頻監聽器,一般會默認的添加到主攝像機上;這樣攝像機拍到哪里我們就監聽哪里的聲音。

 主攝像機初始化的時候也是帶着Audio Listener組件的。

3: AudioClip: 聲音文件,就是聲音的資源文件

 

 

AudioSource(聲源)

我們需要對聲音進行衰減,需要計算監聽器與聲源的距離,需要對一些聲源做混合,就要使用AudioSource組件,幫助我們播放AudioClip(音頻文件)

1: 音頻源: 在場景中播放音頻剪輯,如果一個音頻剪輯是一個3D,那么音頻源就會在給定的位置,然后隨着距離進行衰減,還可以在3D和2D之間進行切換;

2: 創建一個音頻源:

    (1): 導入要播放的聲音文件;

    (2): 創建一個節點,並加上Audio-->Audio Source組件;

    (3): 將AudioClip加入到AudioSource中;

    (4): 代碼控制播放;

3:屬性:

  AudioClip: 要被播放的文件;

  Output: 音頻剪輯通過音頻混合器輸出;

  Mute: 是否靜音;

  Play On Wake喚醒時播放;

  loop: 是否循環播放;

  Priority: 播放的優先級,0最高,256最低,默認128,優先級高的一般是重要的音效

  Volume 音量 Pitch 音調 Stereo Pan立體聲(-1左聲道, 1右聲道)

  Spatial Blend(空間混合), 0為2D音效, 1為3D音效,2D音效不會做衰減

  Spread: (3D)立體聲在揚聲器空間中的傳播速度;

  Volume Rolloff音量衰減模式: 對數(Logarithmic),線性(Linear)和自定義模式(Custom),自定義模式要自己加控制點。

  Min Distance/Max Distance衰減的范圍,衰減距離的 開始結束, 最小距離(聲音保持最大量),最大距離(不再衰減)

              當我們的音頻監聽器和聲源的距離小於Min Distance的時候,都是最大聲音,大於Max Distance的都是最小聲音或者沒有,這個取決於那個聲音曲線的設置,一般自定義才可以設置超出Max距離后還有聲音。

              當我們調節Min Distance/Max Distance的時候,Scene視圖里面的聲源球的范圍也會隨之改變,兩個球體之間的部分就是有衰減的部分。

              

 

聲音實例

1.創建Unity工程目錄

2.在resources文件夾下面創建一個sounds文件夾

3.把准備好的聲音素材復制進去

4.點擊音頻資源右下角的播放可以播放,最后一行的數值的話,前面是碼率,后面是聲音的時間

5.創建一個audio的空節點,添加AudioSource組件

6.把准備好的音頻文件audioclip文件拖進audio節點的AudioSource組件的屬性中。

7.使用代碼來控制聲音播放,創建一個腳本audio_test掛載在audio節點下面

8.打開audio_test腳本

第一步:寫一個public AudioSource s;公開屬性,然后把audio節點拖進屬性中,這樣就關聯好了自己的AudioSource組件(其實我覺得可以用getComponent獲得組件,事實證明可以)

第二步:設置聲音

using UnityEngine;
using System.Collections;

public class audio_test : MonoBehaviour {

    public AudioSource s;
    // Use this for initialization
    void Start () {
        // 聲音的全局設置
        AudioConfiguration audio_config = AudioSettings.GetConfiguration();
        //....中間設置內容
        AudioSettings.Reset(audio_config);//設置完后再放回去
        // end 
     //上面兩句必須寫,不然下面那句執行無效,我也不知道為啥     

// this.s.Play();//如果里面加數字不是延遲播放,而是類似快進,碼率為快進1秒,碼率X2位快進2秒 this.s.PlayDelayed(5);//延遲5秒播放 } // Update is called once per frame void Update () { if (Input.GetMouseButtonDown(0)) {//鼠標左鍵按下 if (this.s.isPlaying) { this.s.Pause(); } else { this.s.Play(); } } if (Input.GetMouseButtonDown(1)) {//鼠標右鍵按下 this.s.Stop(); } } }

9.鼠標左鍵單擊Game視圖,聲音過5秒播放,再點擊暫停,再點擊繼續播放,鼠標右鍵停止播放。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM