Unity SoundManager

来源:互联网 发布:网络辟谣平台 编辑:程序博客网 时间:2024/06/04 23:30
using UnityEngine;using System.Collections;using System.Collections.Generic;public enum E_PlayMusic{    None,    普通按钮点击,    开始场景,    //TODO 》》》》》》》    //TODO 》》》》》》》    //TODO 》》》》》》》}public class SoundManager:MonoBehavior{    private AudioSource audioSource;    private Dictionary<string,AudioClip> audioClipDict = new Dictionary<string, AudioClip>();    /// <summary>    /// 播放音乐(音效)    /// </summary>    /// <param name="ac">要播放的音乐</param>    private void PlaySound(AudioClip ac)    {        AudioSource.PlayClipAtPoint(ac,Camera.main.transform.position);    }    /// <summary>    /// 通过路径播放音乐(音效)    /// </summary>    /// <param name="soundPath">Resource中的路径</param>    private void PlaySoundByPath(string soundPath)    {        AudioClip ac = audioClipDict.TryGetValueExtension(soundPath);        if (ac == null)        {            ac = Resources.Load<AudioClip>(soundPath);            audioClipDict.Add(soundPath, ac);        }        PlaySound(ac);    }    /// <summary>    /// 通过路径播放背景音乐    /// </summary>    /// <param name="bgmPath"></param>    /// <param name="volume"></param>    private void PlaybgmByPath(string bgmPath,float volume = 0.5f)    {        AudioClip ac = audioClipDict.TryGetValueExtension(bgmPath);        if (ac == null)        {            ac = Resources.Load<AudioClip>(bgmPath);            audioClipDict.Add(bgmPath,ac);        }        Playbgm(ac,volume);    }    /// <summary>    /// 播放背景音乐    /// </summary>    /// <param name="ac"></param>    /// <param name="volume"></param>    private void Playbgm(AudioClip ac,float volume)    {        if (audioSource == null)        {            GameObject go = new GameObject(GameDefine.audioSourceTag);            go.tag = GameDefine.audioSourceTag;            audioSource = go.GetOrAddComponent<AudioSource>();            DontDestroyOnLoad(go);        }        if (audioSource.isPlaying)        {            audioSource.Stop();        }        audioSource.clip = ac;        audioSource.volume = volume;        audioSource.loop = true;        audioSource.Play();    }    /// <summary>    /// 加载场景的时候关闭    /// </summary>    public void StopBgmOnLoad()    {        audioSource.Stop();    }//例子    /// <summary>    /// 播放音乐/音效    /// </summary>    /// <param name="e_PlayMusic"></param>    public void PlaySound(E_PlayMusic e_PlayMusic)    {        switch (e_PlayMusic)        {            case E_PlayMusic.普通按钮点击:                PlaySoundByPath("Sound/UI/普通按钮点击");                break;            case E_PlayMusic.开始场景:                PlaybgmByPath("Sound/Bg/大闹天宫");                break;        }    }}


0 0