您的位置:首页 > 移动开发 > Unity3D

Unity3D之音乐音效的播放

2015-04-15 23:47 951 查看
原创文章如需转载请注明:转载自 脱莫柔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();  

    }  

}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  unity3d