原创文章如需转载请注明:转载自 脱莫柔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.碰撞触发的音效
- 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();
- }
- }
版权声明:本文为博主原创文章,未经博主允许不得转载。