// 变更控制状态:准备暂停
 public void ToUnPause()
 {
     if (playingState == BGMPlayingState.Pausing)
     {
         playingControlState = BGMPlayingControlState.ToUnPause;
     }
 }
 // 变更控制状态:准备停止
 public void ToStop()
 {
     if (playingState == BGMPlayingState.Playing)
     {
         playingControlState = BGMPlayingControlState.ToStop;
     }
 }
 // 变更控制状态:准备播放
 public void ToPlay()
 {
     if (playingState != BGMPlayingState.Playing)
     {
         playingControlState = BGMPlayingControlState.ToPlay;
     }
 }
        // Use this for initialization
        void Start()
        {
            audioSource      = GetComponent <AudioSource>();
            audioSource.loop = false;
            // 一开始的音频剪辑
            if (startAudioClipIndex == -1 ||
                startAudioClipIndex >= audioClips.Count ||
                startAudioClipIndex < 0)
            {
                ChangeAudioClip();
            }
            else
            {
                ChangeAudioClip(startAudioClipIndex);
            }
            playingState        = BGMPlayingState.Initing;
            playingControlState = BGMPlayingControlState.ToPlay;

            audioClipsTime = new float[audioClips.Count];

            for (int i = 0; i < audioClips.Count; i++)
            {
                audioClipsTime[i] = audioClips[i].length;
            }
        }
        // Update is called once per frame
        void Update()
        {
            switch (playingControlState)
            {
            case BGMPlayingControlState.None:
                // 该换碟了!
                if (audioSource.isPlaying == false && playingState == BGMPlayingState.Playing)
                {
                    // 如果开启淡入效果,并且此时刚好换放BGM
                    if (playingState == BGMPlayingState.Initing && fadedOn)
                    {
                        StartFade();
                    }
                    ChangeAudioClip();
                    playingControlState = BGMPlayingControlState.ToPlay;
                }
                break;

            case BGMPlayingControlState.ToPause:
                audioSource.Pause();
                OnControlStateChangedDone();
                playingState = BGMPlayingState.Pausing;
                break;

            case BGMPlayingControlState.ToPlay:
                // 如果开启淡入效果,并且此时刚好开始放BGM
                if (playingState == BGMPlayingState.Initing && fadedOn)
                {
                    StartFade();
                }
                audioSource.Play();
                OnControlStateChangedDone();

                playingState = BGMPlayingState.Playing;
                break;

            case BGMPlayingControlState.ToStop:
                audioSource.Stop();
                OnControlStateChangedDone();
                playingState = BGMPlayingState.Stoping;
                break;

            case BGMPlayingControlState.ToUnPause:
                audioSource.UnPause();
                OnControlStateChangedDone();
                playingState = BGMPlayingState.Playing;
                break;

            default:
                break;
            }
        }
 // 控制状态变更完毕的一个回调函数
 private void OnControlStateChangedDone()
 {
     playingControlState = BGMPlayingControlState.None;
 }