Unity3D之音乐音效的播放

原创文章如需转载请注明:转载自 脱莫柔Unity3D学习之旅 QQ群:【Unity3D(AR/VR) 334163814】【Unity3D(游戏) 119706192】 本文链接地址: 多种播放音效的方式


AudioListener组件默认绑定在主摄像机上,这个组件的功能相当于耳朵,用来听声音的。

1.背景音乐

选中音乐文件,建议不勾选 3D Sound 选项。
在Main Camera下创建一个空物体,添加 AudioSound 组件, AudioClip 选择要播放的音乐。
Loop 必须勾选,循环播放。
勾选 PlayOnAwake ,场景一进来就开始播放,如果不勾选找个合适时机Play()。

2.NGUI的UIPlaySound

在摄像机直接添加个 AudioSource 组件,这个组件不挂任何 AudioClip 。( UIPlaySound 将在这个组件上播放音效,在这里调整 Volume 能控制所有 UIPlaySound 的音量大小。 UIPlaySound Volume 属性只控制自己的音量,最后的音量是这两个音量值相乘。)

3.碰撞触发的音效

  1. public AudioClip AC;  
  2. OnCollisionEnter(Collision collision)  
  3. //或者OnTriggerEnter(Collider collider)  
  4. {  
  5.     //被撞得物体原点发出声音(第二个参数用来设置发出声音的世界坐标,不要离AudioListener太远)  
  6.     AudioSource.PlayClipAtPoint(AC, transform.localPosition);  
  7. }  

4.Animation动作回调的音效

  1. public class AnimationCallSound : MonoBehaviour   
  2. {  
  3.     //防止同一个动作多次注册回调  
  4.     public static List<string> isHaveevent = new List<string>();  
  5.   
  6.     //调用事件  
  7.     public float EventTime;  
  8.     //要播放的音效(必须绑定一个AudioSource组件)  
  9.     public AudioSource AS;  
  10.   
  11.     void Start ()   
  12.     {  
  13.         if (AS == null)  
  14.             Debug.LogError("没有绑定音效");  
  15.         AddEvent();  
  16.         //防止场景内动作相同的物体动作同步  
  17.         Invoke("PlayAnim",Random.Range(0.1f,5.5f));  
  18.     }  
  19.     void PlayAnim()  
  20.     {  
  21.         animation.Play();  
  22.     }  
  23.   
  24.       
  25.     //给Animation动画注册回调事件  
  26.     void AddEvent()  
  27.     {  
  28.         foreach (string name in isHaveevent)  
  29.         {  
  30.             if (animation.clip.name == name)  
  31.                 return;  
  32.         }  
  33.           
  34.         AnimationEvent auidoEvent = new AnimationEvent();  
  35.         auidoEvent.time = EventTime;  
  36.         auidoEvent.functionName = "PlayAudio";  
  37.   
  38.         animation.clip.AddEvent(auidoEvent);  
  39.         isHaveevent.Add(animation.clip.name);  
  40.         Debug.Log("add " + animation.clip.name + " Event!");  
  41.     }  
  42.   
  43.     public void PlayAudio()  
  44.     {  
  45.         AS.Play();  
  46.     }  
  47. }  
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值