之前我寫過一篇很方便使用聲音的管理器
這篇博客全面的介紹幾種播放聲音的方法
1.常見使用方法介紹
(1) Play() //播放背景音樂(只能播放在同一實際內播放一種音樂)
(2) PlayOnShot() //播放2D音效
2.使用方法
(1) PlayClipAtPoint() //播放3D音效
想要正常的產生和聽到聲音必須有監聽器AudioListener
當我們想要控制背景音樂等就可以用 Play() Pause() Stop() 進行控制。
(2) 如果我們需要在同一時間播放多種音樂。 我們就需要用到 PlayClipAtPoint() 或者 PlayOnShot()
PlayOnShot() 與 PlayClipAtPoint() 區別在於
1. PlayClipAtPoint() 是 Static Method 不需要實例化對象就可以使用.
2. PlayClipAtPoint() 播放的是 3D 音效,音效大小與攝像機位置有關
PlayOnShot() 播放的是 2D 音效
相同點:
用這兩種方法,
每個AudioSource都可以同時播放多種音效,
都可以調節音量大小
音效可以用下述方法來播放:static void PlayClipAtPoint(AudioClip clip,Vector3 position, float volume = 1.0F);
使用AudioSource.PlayClipAtPoint播放聲音,會自動生成一個名爲"One shot audio"的物體,
並自動添加了AudioSource和相應的audioclip,同時播放多個聲音時會生成多個同名的物體,
各聲音的播放互不影響,但缺點是隻能設置音量,位置,
還有一些特殊的聲音效果也不易實現,只能播放一次,播放完成後,One shot audio自動銷燬。
下面是一個PlayClipAtPoint的實例 用起來比較方便
public int index = 0;
public AudioClip[] clips;
void Start()
{
index = 0;
InvokeRepeating("PlaySound", 2.0f, 0.5f);
}
void PlaySound()
{
if (index < clips.Length)
{
AudioSource.PlayClipAtPoint(clips[index], Vector3.zero, 1.0f);
index++;
}
else
{
index = 0;
}
}
當我們使用時候只要吧clip拖上去就行
可以看出,在只需要播放簡單的音效時,可以使用PlayClipAtPoint來播放,不需要添加AudioSource,不需要獲取各個AudioSource的引用,就可以直接播放聲音。
還有就是InvokeRepeating的作用是在等待第二個參數的時間間隔,調用第一個參數方法 然後再經過第三個參數的時間間隔再次調用
PlayOneShot(Clip,volume);//其中的clip是聲音片段 volume是音量大小
PlayOneShot和PlayClipAtPoint的兩個方法的音量大小這個參數是可以省略不寫的