Unity3D音訊播放 動態載入元件

NO IMAGE

網上大多數Unity教程只講述瞭如何在Unity裡播放音樂,如何通過拖拽新增音訊檔案之後就沒有繼續了
但在遊戲中有時候一個物件需要播放好幾種聲音,這個時候我們就需要用程式碼進行控制,教程上推拽給AudioClip賦值的方法就顯得不是那麼實用了
所以本篇將重點講述如何在Unity中建立一個最簡化的音訊播放器,並通過程式碼進行動態載入與播放

①建立一個Empty物件 點選選單欄[GameObject]–>Create Empty 命名為Audio

②選取這個空物件 點選選單欄[Component]–>Audio–>Audio Source 這樣就在場景裡建立瞭如圖所示的一個喇叭

③建立資原始檔夾命名為Resources,並把BeiTown.mp3檔案拖入其中,注意一定要將資原始檔夾名設為Resources,否則Resources.Load方法將無法找到資原始檔

④建立指令碼
接下來開始建立指令碼

MusicPlayer.cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
using UnityEngine;
using System.Collections;

public class MusicPlayer : MonoBehaviour {

    public AudioSource Sound;

    public void Play(string str)
    {
        Sound.clip = (AudioClip)Resources.Load(str, typeof(AudioClip));//呼叫Resources方法載入AudioClip資源
        Sound.Play();
    }

}

MusicTest.cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
using UnityEngine;
using System.Collections;

public class MusicTest : MonoBehaviour {

    private MusicPlayer music;

    void Start () {
    
        music = (GetComponent(“MusicPlayer”) as MusicPlayer);//獲取播放器物件

    }

    void OnGUI()
    {
        if(GUI.Button(new Rect(10, 10, 100, 50), “PLAY”)){

            music.Play(“BeiTown”);//呼叫播放器Play方法

        }

    }

}

⑤將腳步繫結到AudioSource音源物件上,並將Audio物件賦給MusicPlayer指令碼里的Sound物件,以便MusicPlayer對其進行操作

⑥點選播放按鈕

這個時候就能聽到聲音了,但是細心的朋友會發現左右耳朵的聲音並不是一樣大的,這是因為我們的聲音監聽繫結在了主攝像機上,這就照成了聲音可能是從一個方向傳來的3D效果,如果不想要這個效果也好辦
選取Audio物件,點選選單欄[Commponent]–>Audio–>Audio Listener
為Audio物件建立一個聲音監聽,並勾選它

重新點選播放按鈕,這個時候發現依然沒有改變,控制檯出現如下警告:There are 2 audio listeners in the scene. Please ensure there is always exactly one audio listener in the scene.
不要著急,Main Camera 主攝像機上的Audio Listen 取消勾選了麼
Unity預設一個scene裡同時只能有一個聲音監聽,其實這也很好理解,在自然情況下,人類也不可能做到兩隻耳朵聽取不同範圍的聲音(藉助裝置除外)
將其他的Audio Listener取消後,只保留Audio上的Audio Listener,點選Play按鈕,一切正常!

其他的暫停,停止,等等操作這裡就不再新增了,感興趣的朋友可以自己參考API進行操作,本文主要描述如何動態載入一首音樂,並將該類進行封裝,同時最簡化的程式碼也利於大家觀看理解。
今天就到這裡吧,意在分享,與君共勉之。