转载自
脱莫柔Unity3D学习之旅
本文链接地址:
多种播放音效的方式
在Main Camera下创建一个空物体,添加 AudioSound组件, AudioClip选择要播放的音乐。
Loop必须勾选,循环播放。
勾选 PlayOnAwake,场景一进来就开始播放,如果不勾选找个合适时机Play()。
AudioListener组件默认绑定在主摄像机上,这个组件的功能相当于耳朵,用来听声音的。
1.背景音乐
选中音乐文件,建议不勾选 3D Sound选项。在Main Camera下创建一个空物体,添加 AudioSound组件, AudioClip选择要播放的音乐。
Loop必须勾选,循环播放。
勾选 PlayOnAwake,场景一进来就开始播放,如果不勾选找个合适时机Play()。
2.NGUI的UIPlaySound
在摄像机直接添加个 AudioSource组件,这个组件不挂任何 AudioClip。( UIPlaySound将在这个组件上播放音效,在这里调整 Volume能控制所有 UIPlaySound的音量大小。 UIPlaySound的 Volume属性只控制自己的音量,最后的音量是这两个音量值相乘。)3.碰撞触发的音效
public AudioClip AC;
OnCollisionEnter(Collision collision)
//或者OnTriggerEnter(Collider collider)
{
//被撞得物体原点发出声音(第二个参数用来设置发出声音的世界坐标,不要离AudioListener太远)
AudioSource.PlayClipAtPoint(AC, transform.localPosition);
}
4.Animation动作回调的音效
public class AnimationCallSound : MonoBehaviour
{
//防止同一个动作多次注册回调
public static List<string> isHaveevent = new List<string>();
//调用事件
public float EventTime;
//要播放的音效(必须绑定一个AudioSource组件)
public AudioSource AS;
void Start ()
{
if (AS == null)
Debug.LogError("没有绑定音效");
AddEvent();
//防止场景内动作相同的物体动作同步
Invoke("PlayAnim",Random.Range(0.1f,5.5f));
}
void PlayAnim()
{
animation.Play();
}
//给Animation动画注册回调事件
void AddEvent()
{
foreach (string name in isHaveevent)
{
if (animation.clip.name == name)
return;
}
AnimationEvent auidoEvent = new AnimationEvent();
auidoEvent.time = EventTime;
auidoEvent.functionName = "PlayAudio";
animation.clip.AddEvent(auidoEvent);
isHaveevent.Add(animation.clip.name);
Debug.Log("add " + animation.clip.name + " Event!");
}
public void PlayAudio()
{
AS.Play();
}
}