音频管理器 ,Dictionary字典的用法

  Dictionary字典的用法

public AudioClip[] AudioClipArray; 

private static Dictionary _DicAudioClipLib;      

void Awake() {

     _DicAudioClipLib = new Dictionary();
        foreach (AudioClip audioClip in AudioClipArray){
            _DicAudioClipLib.Add(audioClip.name,audioClip);
        }

   使用方法1在空提上挂上脚本,建立一个监听,3个audiosouce,关闭摄像机监听。添加音频

  /***

 * 
 *    Title:    "生化危机" 项目
 *              音频封装类。(程序重构)
 *    Description: 
 *              作用:项目中大量应用音频剪辑文件时候,进行统一管理。
 *
 *    Author:    LiuGuozhu
 *    Date:      2015
 *    Version:   1.0
 *    Modify recoder:
 */
using UnityEngine;
using System.Collections;
using System.Collections.Generic;                                    //泛型集合命名空间


public class AudioManager : MonoBehaviour {
    public AudioClip[] AudioClipArray;                               //剪辑数组
    public static float AudioBackgroundVolumns = 1F;                 //背景音量
    public static float AudioEffectVolumns = 1F;                     //音效音量


    private static Dictionary _DicAudioClipLib;   //音频库
    private static AudioSource[] _AudioSourceArray;                  //音频源数组
    private static AudioSource _AudioSource_BackgroundAudio;         //背景音乐
    private static AudioSource _AudioSource_AudioEffectA;            //音效源A
    private static AudioSource _AudioSource_AudioEffectB;            //音效源B


    ///
    /// 音效库资源加载
    ///

void Awake() {
   //音频库加载
        _DicAudioClipLib = new Dictionary();
        foreach (AudioClip audioClip in AudioClipArray){
            _DicAudioClipLib.Add(audioClip.name,audioClip);
        }
        //处理音频源
        _AudioSourceArray=this.GetComponents();
        _AudioSource_BackgroundAudio = _AudioSourceArray[0];
        _AudioSource_AudioEffectA = _AudioSourceArray[1];
        _AudioSource_AudioEffectB = _AudioSourceArray[2];


        //从数据持久化中得到音量数值
        if (PlayerPrefs.GetFloat("AudioBackgroundVolumns")>=0){
            AudioBackgroundVolumns = PlayerPrefs.GetFloat("AudioBackgroundVolumns");
            _AudioSource_BackgroundAudio.volume = AudioBackgroundVolumns;
        }
        if (PlayerPrefs.GetFloat("AudioEffectVolumns")>=0){
            AudioEffectVolumns = PlayerPrefs.GetFloat("AudioEffectVolumns");
            _AudioSource_AudioEffectA.volume = AudioEffectVolumns;
            _AudioSource_AudioEffectB.volume = AudioEffectVolumns;
        }
}//Start_end


    ///
    /// 播放背景音乐
    ///

    /// 音频剪辑
    public static void PlayBackground(AudioClip audioClip){
        //防止背景音乐的重复播放。
        if (_AudioSource_BackgroundAudio.clip == audioClip){
            return;
        }
        //处理全局背景音乐音量
        _AudioSource_BackgroundAudio.volume = AudioBackgroundVolumns;
        if (audioClip){
            _AudioSource_BackgroundAudio.clip = audioClip;
            _AudioSource_BackgroundAudio.Play();
        }else{
            Debug.LogWarning("[AudioManager.cs/PlayBackground()] audioClip==null !");
        }
    }


    //播放背景音乐
    public static void PlayBackground(string strAudioName){
        if (!string.IsNullOrEmpty(strAudioName)){
            PlayBackground(_DicAudioClipLib[strAudioName]);
        }else{
            Debug.LogWarning("[AudioManager.cs/PlayBackground()] strAudioName==null !");            
        }
    }


    ///
    /// 播放音效_音频源A
    ///

    /// 音频剪辑
    private static void PlayAudioEffectA(AudioClip audioClip){
        //处理全局音效音量
        _AudioSource_AudioEffectA.volume = AudioEffectVolumns;


        if (audioClip){
            _AudioSource_AudioEffectA.clip = audioClip;
            _AudioSource_AudioEffectA.Play();
        }
        else{
            Debug.LogWarning("[AudioManager.cs/PlayAudioEffectA()] audioClip==null ! Please Check! ");
        }
    }


    ///
    /// 播放音效_音频源B
    ///

    /// 音频剪辑
    private static void PlayAudioEffectB(AudioClip audioClip){
        //处理全局音效音量
        _AudioSource_AudioEffectB.volume = AudioEffectVolumns;


        if (audioClip){
            _AudioSource_AudioEffectB.clip = audioClip;
            _AudioSource_AudioEffectB.Play();
        }
        else{
            Debug.LogWarning("[AudioManager.cs/PlayAudioEffectB()] audioClip==null ! Please Check! ");
        }
    }


    ///
    /// 播放音效_音频源A
    ///

    /// 音效名称
    public static void PlayAudioEffectA(string strAudioEffctName)
    {
        if (!string.IsNullOrEmpty(strAudioEffctName)){
            PlayAudioEffectA(_DicAudioClipLib[strAudioEffctName]);
        }
        else{
            Debug.LogWarning("[AudioManager.cs/PlayAudioEffectA()] strAudioEffctName==null ! Please Check! ");
        }
    }


    ///
    /// 播放音效_音频源B
    ///

    /// 音效名称
    public static void PlayAudioEffectB(string strAudioEffctName)
    {
        if (!string.IsNullOrEmpty(strAudioEffctName))
        {
            PlayAudioEffectB(_DicAudioClipLib[strAudioEffctName]);
        }
        else
        {
            Debug.LogWarning("[AudioManager.cs/PlayAudioEffectB()] strAudioEffctName==null ! Please Check! ");
        }
    }


    ///
    /// 改变背景音乐音量
    ///

    ///
    public static void SetAudioBackgroundVolumns(float floAudioBGVolumns){
        _AudioSource_BackgroundAudio.volume = floAudioBGVolumns;
        AudioBackgroundVolumns = floAudioBGVolumns;
        //数据持久化
        PlayerPrefs.SetFloat("AudioBackgroundVolumns", floAudioBGVolumns);
    }


    ///
    /// 改变音效音量
    ///

    ///
    public static void SetAudioEffectVolumns(float floAudioEffectVolumns){
        _AudioSource_AudioEffectA.volume = floAudioEffectVolumns;
        _AudioSource_AudioEffectB.volume = floAudioEffectVolumns;
        AudioEffectVolumns = floAudioEffectVolumns;
        //数据持久化
        PlayerPrefs.SetFloat("AudioEffectVolumns", floAudioEffectVolumns);
    }
}//Class_end

你可能感兴趣的:(unity3dC#,教程)