關於Unity的音效方面,主要關注以下3個類:
Audio Clip : audio data,導入到unity中的音頻文件都是audio clip。
Audio Sources : 掛載這audio clip的Object,相當於是一個音頻控制器,可以用它來控制音頻的播放、停止、以及設置一些播放參數等。
Audio Listener : 音效的監聽者,注意一個scene同時只能有一個listener,一般掛載到main camera上或者主角身上,具體掛哪兒根據需求來定。
另外還有一些音頻相關的類:
Audio Effect: Unity自帶的一些聲音效果,通過掛載腳本到Audio Source或Audio Listener上實現
音頻低通濾波器(Audio Low Pass Filter ):
聲音的傳播在不同的環境是不同的。例如表達一個可視化的霧效果就是添加低通濾波器到音頻偵聽器。
從門后發出的聲音的高頻率,不會達到偵聽器。為了模擬這個,簡單地在開門時改變截止頻率(Cutoff Frequency)
音頻高通濾波器Audio High Pass Filter :
只留下高頻率的音頻。
音頻失真濾波器 Audio Distortion Filter :
應用音頻失真濾波器(Audio Distortion Filter)來模擬一個低質量的無線電發射的聲音。
Reverb Zones : 混響區
混響區(Reverb Zones)獲取音頻剪輯(Audio Clip)並且根據音頻偵聽器所在的混響區進行失真處理。它們當你想逐步從一個沒有環境影響的點變化到有環境影響的地方時被使用。例如,當你進入一個洞穴。
Microphone : 麥克風
音頻屬性設置:
Audio Format:
Native: 效果好,適合較短音效;
Compressed:有壓縮,適合較長的音效。
Load Type:
Decompress on load: 可以避免運行時開銷,但內存消耗很大,適用於較小的壓縮聲音;
Compressed in memory: 保持聲音在內存中是壓縮的並在播放時解壓縮,有輕微的性能開銷,適用於較大文件。
Gapless looping : 無縫循環,對於loop音頻,有可能由於壓縮導致破壞循環,這種情況下可以通過設置這個變量來解決。
音軌模塊:.xm, .mod, .it, 和 .s3m
根據一般經驗,像背景音樂這樣的長音頻適合用壓縮音頻,而音效適合用不壓縮的。
在移動平台上,audio都會自動按照MP3格式進行壓縮,以降低CPU的解壓縮壓力。
在IOS上,可以使用Apple硬件解碼的功能來得到更好的效率。在Audio Importer中勾上"Hardware Decoding"即可。
音效的播放:AudioSource.Play/Pause/Stop
public class AudioComponent : MonoBehaviour
{
public void PlayAudioClip(AudioClip clip)
{
if (clip == null)
return;
AudioSource source = (AudioSource)gameObject.GetComponent("AudioSource");
if (source == null)
source = (AudioSource)gameObject.AddComponent("AudioSource");
source.clip = clip;
source.minDistance=1.0f;
source.maxDistance=50;
source.rolloffMode=AudioRolloffMode.Linear;
source.transform.position = transform.position;
}
}
