一.參考資料:
https://blog.csdn.net/winner_2012/article/details/46558435
https://blog.csdn.net/winner_2012/article/details/46558435
https://blog.csdn.net/winner_2012/article/details/46558589
二.介紹目錄
Class AudioSource
1.基本常識
2.常見使用方法介紹
Public Methed
(1) Play() //播放背景音樂(只能播放在同一實際內播放一種音樂)
(2) PlayOnShot() //播放2D音效
Static Methed
(1) PlayClipAtPoint() //播放3D音效
-----------------------------官方API 指路-------------------------------------
AudioSource
Description
A representation of audio sources in 3D.
An AudioSource is attached to a GameObject for playing back sounds in a 3D environment. In order to play 3D sounds you also need to have a AudioListener. The audio listener is normally attached to the camera you want to use. Whether sounds are played in 3D or 2D is determined by AudioImporter settings.
You can play a single audio clip using Play, Pause and Stop. You can also adjust its volume while playing using the volume property, or seek using time. Multiple sounds can be played on one AudioSource using PlayOneShot. You can play a clip at a static position in 3D space using PlayClipAtPoint.
See Also: AudioListener, AudioClip, AudioSource component.
----------------------------------詳細解釋-------------------------------------
三.總結:
1. AudioSource 是 聲源(即聲音發出的來源)
那么不管是2D音效還是3D音效都需要一個 AudioListener 來接受音效
2. AudioSource 組件 使用了 AudioClip.
即 AudioSource 中包含 AudioClip ,AudioClip 存放需要播放的音樂(.ogg .mp3 等)
AudioSource 可以用於2D 或者 3D環境,對應的 Inspector 窗口中可以看見
(1) 如果我們只需要播放一種音樂.
就可以用 Play() Pause() Stop() 進行控制。
而使用Play() 這種方法播放,播放音效的屬性取決於 Inspector窗口中設置。
如圖,用Play() 播放音效的音量為0.469
值得注意的一點是,每個 AudioSource 用 Play() , 只能播放一種音效.
即 AudioSource 調用 Play()后, 會先將 這個 AudioSource 正在播放的音效 停止,然后再 播放 AudioClip中的音效。
public class SoundPlayer : MonoBehaviour {
private static AudioClip audioClip;
private static AudioSource audioSource;
void Awake(){
//獲取當前GameObject的AudioSource組件的AduioPlayer
audioClip = gameObject.GetComponent<AudioSource>().clip;
//獲取當前GameObject的AudioSource組件
audioSource = this.gameObject.GetComponent<AudioSource>();
audioSource.Play();
StartCoroutine(WaitAndPrint(4.0F));//4秒后再次調用Play()
}
//定義 WaitAndPrint()方法
IEnumerator WaitAndPrint(float waitTime)
{
yield return new WaitForSeconds(waitTime);
//等待之后執行的動作
audioSource.Play();
}
}
(2) 如果我們需要在同一時間播放多種音樂。 我們就需要用到 PlayClipAtPoint() 或者 PlayOnShot()
PlayOnShot() 與 PlayClipAtPoint() 區別在於
1. PlayClipAtPoint() 是 Static Method 不需要實例化對象就可以使用.
2. PlayClipAtPoint() 播放的是 3D 音效,音效大小與攝像機位置有關
PlayOnShot() 播放的是 2D 音效
相同點:
用這兩種方法,
每個AudioSource都可以同時播放多種音效,
都可以調節音量大小
//使用PlayOneShot
public class SoundPlayer : MonoBehaviour {
private static AudioClip audioClip;
private static AudioSource audioSource;
void Awake(){
//獲取當前GameObject的AudioSource組件的AduioPlayer
audioClip = gameObject.GetComponent<AudioSource>().clip;
//獲取當前GameObject的AudioSource組件
audioSource = this.gameObject.GetComponent<AudioSource>();
//public void PlayOneShot(AudioClip clip, float volumeScale = 1.0F);
audioSource.PlayOneShot(audioClip,0.4f);
}
}
//使用PlayClipAtPoint
public class SoundPlayer : MonoBehaviour {
private static AudioClip audioClip;
private static AudioSource audioSource;
void Awake(){
//獲取當前GameObject的AudioSource組件的AduioPlayer
audioClip = gameObject.GetComponent<AudioSource>().clip;
/*
public static void PlayClipAtPoint(AudioClip clip, Vector3 position, float volume = 1.0F);
*/
//在當前位置播放3D音效
AudioSource.PlayClipAtPoint(audioClip,this.transform.position);
}
}