/// <summary>
 /// 停止播放指定的世界音效
 /// </summary>
 /// <param name="attachTarget">附加目标</param>
 public void StopWorldSound(GameObject attachTarget)
 {
     if (WorldAudios.ContainsKey(attachTarget))
     {
         if (WorldAudios[attachTarget].isPlaying)
         {
             WorldAudios[attachTarget].Stop();
         }
     }
 }
        /// <summary>
        /// 销毁所有闲置中的世界音效的音源
        /// </summary>
        public void ClearIdleWorldAudioSource()
        {
            HashSet <GameObject> removeSet = new HashSet <GameObject>();

            foreach (var audio in WorldAudios)
            {
                if (!audio.Value.isPlaying)
                {
                    removeSet.Add(audio.Key);
                    Main.Kill(audio.Value);
                }
            }
            foreach (var item in removeSet)
            {
                WorldAudios.Remove(item);
            }
        }
 /// <summary>
 /// 恢复播放指定的世界音效
 /// </summary>
 /// <param name="attachTarget">附加目标</param>
 /// <param name="isGradual">是否渐进式</param>
 public void UnPauseWorldSound(GameObject attachTarget, bool isGradual = true)
 {
     if (WorldAudios.ContainsKey(attachTarget))
     {
         AudioSource audio = WorldAudios[attachTarget];
         if (isGradual)
         {
             audio.volume = 0;
             audio.UnPause();
             audio.DOFade(WorldVolume, 2);
         }
         else
         {
             audio.UnPause();
         }
     }
 }
 /// <summary>
 /// 暂停播放指定的世界音效
 /// </summary>
 /// <param name="attachTarget">附加目标</param>
 /// <param name="isGradual">是否渐进式</param>
 public void PauseWorldSound(GameObject attachTarget, bool isGradual = true)
 {
     if (WorldAudios.ContainsKey(attachTarget))
     {
         AudioSource audio = WorldAudios[attachTarget];
         if (isGradual)
         {
             audio.DOFade(0, 2).OnComplete(() =>
             {
                 audio.Pause();
                 audio.volume = WorldVolume;
             });
         }
         else
         {
             audio.Pause();
         }
     }
 }
 /// <summary>
 /// 播放世界音效
 /// </summary>
 /// <param name="attachTarget">附加目标</param>
 /// <param name="clip">音乐剪辑</param>
 /// <param name="isLoop">是否循环</param>
 /// <param name="speed">播放速度</param>
 public void PlayWorldSound(GameObject attachTarget, AudioClip clip, bool isLoop = false, float speed = 1)
 {
     if (WorldAudios.ContainsKey(attachTarget))
     {
         AudioSource audio = WorldAudios[attachTarget];
         if (audio.isPlaying)
         {
             audio.Stop();
         }
         audio.clip  = clip;
         audio.loop  = isLoop;
         audio.pitch = speed;
         audio.Play();
     }
     else
     {
         AudioSource audio = AudioToolkit.AttachAudioSource(attachTarget, WorldPriority, WorldVolume, 1, 1, Mute);
         WorldAudios.Add(attachTarget, audio);
         audio.clip  = clip;
         audio.loop  = isLoop;
         audio.pitch = speed;
         audio.Play();
     }
 }