public void PlayBackgroundMusic(AudioClip clip, MusicTransType transType, float duration, float volume,
                                 float pitch, float position = 0)
 {
     if (clip == null || backgroundMusic.CurrentClip == clip)
     {
         return;
     }
     if (backgroundMusic.CurrentClip == null || duration <= 0)
     {
         transType = MusicTransType.Swift;
     }
     if (transType == MusicTransType.Swift)
     {
         PlayBackgroundMusic(clip, position, pitch);
         SetBackgroundVolume(volume);
     }
     else
     {
         if (backgroundMusic.NextClip != null)
         {
             return;
         }
         backgroundMusic.TransType = transType;
         transitionTime            = backgroundMusic.TransitionDuration = duration;
         musicVolCap = musicVolume;
         backgroundMusic.NextClip = clip;
         if (backgroundMusic.TransType == MusicTransType.CrossFade)
         {
             if (crossFadeSource != null)
             {
                 return;
             }
             crossFadeSource          = InitAudioSource(gameObject.AddComponent <AudioSource>());
             crossFadeSource.volume   = Mathf.Clamp01(musicVolCap - currentMusicVol);
             crossFadeSource.priority = 0;
             PlayBackgroundMusic(ref crossFadeSource, backgroundMusic.NextClip, 0, pitch);
         }
     }
 }
 public void PlayBackgroundMusic(string clippath, MusicTransType transition)
 {
     PlayBackgroundMusic(LoadClip(clippath), transition, 1f, musicVolume, 1f);
 }
 public void PlayBackgroundMusic(string clippath, MusicTransType transition, float duration, float volume)
 {
     PlayBackgroundMusic(LoadClip(clippath), transition, duration, volume, 1f);
 }
 public void PlayBackgroundMusic(string clippath, MusicTransType transition, float duration, float volume, float pitch, float playback_position = 0)
 {
     PlayBackgroundMusic(LoadClip(clippath), transition, duration, volume, pitch, playback_position);
 }
 public void PlayBackgroundMusic(AudioClip clip, MusicTransType transition)
 {
     PlayBackgroundMusic(clip, transition, 1f, musicVolume, 1f);
 }
 public void PlayBackgroundMusic(AudioClip clip, MusicTransType transition, float transition_duration, float volume)
 {
     PlayBackgroundMusic(clip, transition, transition_duration, volume, 1f);
 }