Unity3D 多种播放音效的方式

 

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的音量大小。 UIPlaySoundVolume属性只控制自己的音量,最后的音量是这两个音量值相乘。)

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. }  


版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值