Unity3d 音效模块相关

关于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;
	}
}