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鍵,音樂繼續播放
}
}
}
注明:所有音樂文檔需要放到屬性面闆中合适的位置。