Unity3D 多种播放⾳效的⽅式
AudioListener 组件默认绑定在主摄像机上,这个组件的功能相当于⽿朵,⽤来听声⾳的。
1.背景⾳乐
选中⾳乐⽂件,建议不勾选 3D Sound 选项。
在Main Camera 下创建⼀个空物体,添加 AudioSound 组件, AudioClip 选择要播放的⾳乐。
Loop 必须勾选,循环播放。
勾选 PlayOnAwake ,场景⼀进来就开始播放,如果不勾选个合适时机Play()。
2.NGUI 的UIPlaySound
在摄像机直接添加个 AudioSource 组件,这个组件不挂任何 AudioClip 。( UIPlaySound 将在这个组件上播放⾳效,在这⾥调整 Volume 能控制所有UIPlaySound 的⾳量⼤⼩。 UIPlaySound 的 Volume 属性只控制⾃⼰的⾳量,最后的⾳量是这两个⾳量值相乘。)
unity3d animation3.碰撞触发的⾳效
4.Animation 动作回调的⾳效
[csharp]
public AudioClip AC ; OnCollisionEnter(Collision collision) //或者OnTriggerEnter(Collider collider) { //被撞得物体原点发出声⾳(第⼆个参数⽤来设置发出声⾳的世界坐标,不要离AudioListener 太远) AudioSource.PlayClipAtPoint(AC, transform.localPosition); }
[csharp]
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(); } }
48.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论