[转]Unity音频管理类-AudioManager


  1 /***
  2  * 
  3  *  插件: 音频管理类
  4  * 
  5  *  功能: 项目中音频剪辑统一管理。
  6  *
  7  *  作者: 刘国柱
  8  *
  9  *  Version: 1.0
 10  * 
 11  */
 12 using UnityEngine;
 13 using System.Collections;
 14 using System.Collections.Generic;                                              //泛型集合命名空间
 15 
 16 public class AudioManager : MonoBehaviour
 17 {
 18     public AudioClip[] AudioClipArray;                                     //剪辑数组
 19     public static float AudioBackgroundVolumns = 1F;                       //背景音量
 20     public static float AudioEffectVolumns = 1F;                           //音效音量
 21 
 22     private static Dictionary<string, AudioClip> _DicAudioClipLib;         //音频库
 23     private static AudioSource[] _AudioSourceArray;                        //音频源数组
 24     private static AudioSource _AudioSource_BackgroundAudio;               //背景音乐
 25     private static AudioSource _AudioSource_AudioEffectA;                  //音效源A
 26     private static AudioSource _AudioSource_AudioEffectB;                  //音效源B
 27 
 28     /// <summary>
 29     /// 音效库资源加载
 30     /// </summary>
 31     void Awake()
 32     {
 33         //音频库加载
 34         _DicAudioClipLib = new Dictionary<string, AudioClip>();
 35         foreach (AudioClip audioClip in AudioClipArray)
 36         {
 37             _DicAudioClipLib.Add(audioClip.name, audioClip);
 38         }
 39         //处理音频源
 40         _AudioSourceArray = this.GetComponents<AudioSource>();
 41         _AudioSource_BackgroundAudio = _AudioSourceArray[0];
 42         _AudioSource_AudioEffectA = _AudioSourceArray[1];
 43         _AudioSource_AudioEffectB = _AudioSourceArray[2];
 44 
 45         //从数据持久化中得到音量数值
 46         if (PlayerPrefs.GetFloat("AudioBackgroundVolumns") >= 0)
 47         {
 48             AudioBackgroundVolumns = PlayerPrefs.GetFloat("AudioBackgroundVolumns");
 49             _AudioSource_BackgroundAudio.volume = AudioBackgroundVolumns;
 50         }
 51         if (PlayerPrefs.GetFloat("AudioEffectVolumns") >= 0)
 52         {
 53             AudioEffectVolumns = PlayerPrefs.GetFloat("AudioEffectVolumns");
 54             _AudioSource_AudioEffectA.volume = AudioEffectVolumns;
 55             _AudioSource_AudioEffectB.volume = AudioEffectVolumns;
 56         }
 57     }
 58 
 59     /// <summary>
 60     /// 播放背景音乐
 61     /// </summary>
 62     /// <param name="audioClip">音频剪辑</param>
 63     public static void PlayBackground(AudioClip audioClip)
 64     {
 65         //防止背景音乐的重复播放。
 66         if (_AudioSource_BackgroundAudio.clip == audioClip)
 67         {
 68             return;
 69         }
 70         //处理全局背景音乐音量
 71         _AudioSource_BackgroundAudio.volume = AudioBackgroundVolumns;
 72         if (audioClip)
 73         {
 74             _AudioSource_BackgroundAudio.loop = true;
 75             _AudioSource_BackgroundAudio.clip = audioClip;
 76             _AudioSource_BackgroundAudio.Play();
 77         }
 78         else
 79         {
 80             Debug.LogWarning("[AudioManager.cs/PlayBackground()] audioClip==null !");
 81         }
 82     }
 83 
 84     /// <summary>
 85     /// 播放背景音乐
 86     /// </summary>
 87     /// <param name="strAudioName"></param>
 88     public static void PlayBackground(string strAudioName)
 89     {
 90         if (!string.IsNullOrEmpty(strAudioName))
 91         {
 92             PlayBackground(_DicAudioClipLib[strAudioName]);
 93         }
 94         else
 95         {
 96             Debug.LogWarning("[AudioManager.cs/PlayBackground()] strAudioName==null !");
 97         }
 98     }
 99 
100     /// <summary>
101     /// 播放音效_音频源A
102     /// </summary>
103     /// <param name="audioClip">音频剪辑</param>
104     public static void PlayAudioEffectA(AudioClip audioClip)
105     {
106         //处理全局音效音量
107         _AudioSource_AudioEffectA.volume = AudioEffectVolumns;
108 
109         if (audioClip)
110         {
111             _AudioSource_AudioEffectA.clip = audioClip;
112             _AudioSource_AudioEffectA.Play();
113         }
114         else
115         {
116             Debug.LogWarning("[AudioManager.cs/PlayAudioEffectA()] audioClip==null ! Please Check! ");
117         }
118     }
119 
120     /// <summary>
121     /// 播放音效_音频源B
122     /// </summary>
123     /// <param name="audioClip">音频剪辑</param>
124     public static void PlayAudioEffectB(AudioClip audioClip)
125     {
126         //处理全局音效音量
127         _AudioSource_AudioEffectB.volume = AudioEffectVolumns;
128 
129         if (audioClip)
130         {
131             _AudioSource_AudioEffectB.clip = audioClip;
132             _AudioSource_AudioEffectB.Play();
133         }
134         else
135         {
136             Debug.LogWarning("[AudioManager.cs/PlayAudioEffectB()] audioClip==null ! Please Check! ");
137         }
138     }
139 
140     /// <summary>
141     /// 播放音效_音频源A
142     /// </summary>
143     /// <param name="strAudioEffctName">音效名称</param>
144     public static void PlayAudioEffectA(string strAudioEffctName)
145     {
146         if (!string.IsNullOrEmpty(strAudioEffctName))
147         {
148             PlayAudioEffectA(_DicAudioClipLib[strAudioEffctName]);
149         }
150         else
151         {
152             Debug.LogWarning("[AudioManager.cs/PlayAudioEffectA()] strAudioEffctName==null ! Please Check! ");
153         }
154     }
155 
156     /// <summary>
157     /// 播放音效_音频源B
158     /// </summary>
159     /// <param name="strAudioEffctName">音效名称</param>
160     public static void PlayAudioEffectB(string strAudioEffctName)
161     {
162         if (!string.IsNullOrEmpty(strAudioEffctName))
163         {
164             PlayAudioEffectB(_DicAudioClipLib[strAudioEffctName]);
165         }
166         else
167         {
168             Debug.LogWarning("[AudioManager.cs/PlayAudioEffectB()] strAudioEffctName==null ! Please Check! ");
169         }
170     }
171 
172     /// <summary>
173     /// 改变背景音乐音量
174     /// </summary>
175     /// <param name="floAudioBGVolumns"></param>
176     public static void SetAudioBackgroundVolumns(float floAudioBGVolumns)
177     {
178         _AudioSource_BackgroundAudio.volume = floAudioBGVolumns;
179         AudioBackgroundVolumns = floAudioBGVolumns;
180         //数据持久化
181         PlayerPrefs.SetFloat("AudioBackgroundVolumns", floAudioBGVolumns);
182     }
183 
184     /// <summary>
185     /// 改变音效音量
186     /// </summary>
187     /// <param name="floAudioEffectVolumns"></param>
188     public static void SetAudioEffectVolumns(float floAudioEffectVolumns)
189     {
190         _AudioSource_AudioEffectA.volume = floAudioEffectVolumns;
191         _AudioSource_AudioEffectB.volume = floAudioEffectVolumns;
192         AudioEffectVolumns = floAudioEffectVolumns;
193         //数据持久化
194         PlayerPrefs.SetFloat("AudioEffectVolumns", floAudioEffectVolumns);
195     }
196 }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM