天天看點

Unity3D中背景音樂和相關音效的添加,背景音樂暫停、停止和播放的設定

AudioSource元件

在攝像頭的屬性面闆中的Audio Listener,如果開啟3D音效聲音大小是相對于錄影機而言的。

所有遊戲設計中都可以使用此方法

設定音樂、音效相關内容步驟:

(1)建立一個空物體Empty命名為Audio

(2)将Audio拖拽至MainCamera上,并且将Audio的坐标改為(0,0,0)

(3)拷入相關的音效

(4)将音效拖拽至Audio物體的Audio Source屬性中的AudioClip上

注:勾選了Play On Awake時表明從開始就播放音樂(在沒有代碼幹預的情況下)

Loop則是指循環的意思

(5)音量調節在屬性面闆的Volume中進行更改。

(6)建立腳本AudioOrange (防止名字重複)完成腳本内容

腳本代碼即解析如下:

public class AudioOrange : MonoBehaviour

{

    AudioSource Orange;//擷取AudioOrange元件

    public AudioClip audio1;

    public AudioClip auido2;//申請兩個變量來為點選使釋放不同的音效

    void Start()

    {

        Orange =  transform.GetComponent<AudioSource>();//完成元件的擷取,為AudioOrange指派

    }

當變量名相同是可以将它們重疊在一起

比如,可将代碼改為:public AudioClip audio1,audio2;這樣可以節省空間

(7)完成了音樂的放置,現在要将相關音效播放出來,完成代碼如下:

  void Update()

    {

        if (Input.GetKeyDown(KeyCode.Q)) //在這裡進行一個Input,如果按下Q鍵時,調用Audio11方法

        {

            Audio11();//調用第一個方法

        }

        if (Input.GetKeyDown(KeyCode.E)) //在這裡進行一個Input,如果按下E鍵時,播放第一個聲音

        {

            Audio22();//調用第一個方法

        }

    }

    void Audio11()//防止名字相沖突

    {

        Orange.clip = audio1;//讓Audio11這個方法等于預先設定好的Audio1

        Orange.Play();

    }

    void Audio22()//防止名字相沖突

    {

        Orange.clip = audio2;//讓Audio11這個方法等于預先設定好的Audio1

        Orange.Play();

    }

}

(8)取消AudioClip中的音樂和Loop以及從開始就播放(上方備注)

完整代碼如下:

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class AudioOrange : MonoBehaviour

{

    AudioSource Orange;//擷取AudioOrange元件

    public AudioClip audio1;

    public AudioClip audio2;//申請兩個變量來為點選使釋放不同的音效

    void Start()

    {

        Orange =  transform.GetComponent<AudioSource>();//完成元件的擷取,為AudioOrange指派

    }

    void Update()

    {

        if (Input.GetKeyDown(KeyCode.Q)) //在這裡進行一個Input,如果按下Q鍵時,調用Audio11方法

        {

            Audio11();//調用第一個方法

        }

        if (Input.GetKeyDown(KeyCode.E)) //在這裡進行一個Input,如果按下E鍵時,播放第一個聲音

        {

            Audio22();//調用第一個方法

        }

    }

    void Audio11()//防止名字相沖突

    {

        Orange.clip = audio1;//讓Audio11這個方法等于預先設定好的Audio1

        Orange.Play();

    }

    void Audio22()//防止名字相沖突

    {

        Orange.clip = audio2;//讓Audio11這個方法等于預先設定好的Audio1

        Orange.Play();

    }

}

播放停止暫停

(1)建立一個新的腳本AudioApple,第一仍然是擷取Orange元件再進行指派。

代碼如下:

public class AudioApple : MonoBehaviour

{

    AudioSource Orange;//擷取AudioOrange元件

    void Start()

    {

        Orange = transform.GetComponent<AudioSource>();//對Orange元件進行指派

    }

(2)将需要的音效重新拖拽至AudioClip中,并且勾選Play On Awake和Loop

完整代碼展示:

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class AudioApple : MonoBehaviour

{

    AudioSource Orange;//擷取AudioOrange元件

    void Start()

    {

        Orange = transform.GetComponent<AudioSource>();//對Orange元件進行指派

    }

    void Update()

    {

        if (Input.GetKeyDown(KeyCode.R))

        {

            Orange.Stop();//當按下R鍵,音樂停止,點選U時重頭開始播放音樂

        }

        if (Input.GetKeyDown(KeyCode.T))

        {

            Orange.Pause();//當按下T鍵,音樂暫停

        }

        if (Input.GetKeyDown(KeyCode.U))

        {

            Orange.Play();//當按下U鍵,音樂繼續播放

        }

    }

}

注明:所有音樂文檔需要放到屬性面闆中合适的位置。