예제 #1
0
        /// <summary>
        /// 暂停播放指定的世界音效
        /// </summary>
        /// <param name="attachTarget">附加目标</param>
        /// <param name="isGradual">是否渐进式</param>
        public void PauseWorldSound(GameObject attachTarget, bool isGradual = true)
        {
            if (attachTarget == null)
            {
                return;
            }

            if (WorldSources.ContainsKey(attachTarget))
            {
                AudioSource audio = WorldSources[attachTarget];
                audio.DOKill();
                if (isGradual)
                {
                    audio.DOFade(0, 2).OnComplete(() =>
                    {
                        audio.Pause();
                        audio.volume = WorldVolume;
                    });
                }
                else
                {
                    audio.Pause();
                    audio.volume = WorldVolume;
                }
            }
        }
예제 #2
0
        /// <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 (attachTarget == null || clip == null)
            {
                return;
            }

            if (WorldSources.ContainsKey(attachTarget))
            {
                AudioSource audio = WorldSources[attachTarget];
                audio.DOKill();
                if (audio.isPlaying)
                {
                    audio.Stop();
                }
                audio.clip   = clip;
                audio.loop   = isLoop;
                audio.pitch  = speed;
                audio.volume = WorldVolume;
                audio.Play();
            }
            else
            {
                AudioSource audio = AudioToolkit.AttachAudioSource(attachTarget, WorldPriority, WorldVolume, 1, 1, Mute);
                WorldSources.Add(attachTarget, audio);
                audio.clip  = clip;
                audio.loop  = isLoop;
                audio.pitch = speed;
                audio.Play();
            }
        }
예제 #3
0
 /// <summary>
 /// 停止播放指定的世界音效
 /// </summary>
 /// <param name="attachTarget">附加目标</param>
 public void StopWorldSound(GameObject attachTarget)
 {
     if (WorldSources.ContainsKey(attachTarget))
     {
         if (WorldSources[attachTarget].isPlaying)
         {
             WorldSources[attachTarget].Stop();
         }
     }
 }
예제 #4
0
        /// <summary>
        /// 停止播放指定的世界音效
        /// </summary>
        /// <param name="attachTarget">附加目标</param>
        public void StopWorldSound(GameObject attachTarget)
        {
            if (attachTarget == null)
            {
                return;
            }

            if (WorldSources.ContainsKey(attachTarget))
            {
                WorldSources[attachTarget].DOKill();
                if (WorldSources[attachTarget].isPlaying)
                {
                    WorldSources[attachTarget].Stop();
                }
            }
        }
예제 #5
0
        /// <summary>
        /// 销毁所有闲置中的世界音效的音源
        /// </summary>
        public void ClearIdleWorldAudioSource()
        {
            HashSet <GameObject> removeSet = new HashSet <GameObject>();

            foreach (var audio in WorldSources)
            {
                if (!audio.Value.isPlaying)
                {
                    removeSet.Add(audio.Key);
                    Main.Kill(audio.Value);
                }
            }
            foreach (var item in removeSet)
            {
                WorldSources.Remove(item);
            }
        }
예제 #6
0
 /// <summary>
 /// 恢复播放指定的世界音效
 /// </summary>
 /// <param name="attachTarget">附加目标</param>
 /// <param name="isGradual">是否渐进式</param>
 public void UnPauseWorldSound(GameObject attachTarget, bool isGradual = true)
 {
     if (WorldSources.ContainsKey(attachTarget))
     {
         AudioSource audio = WorldSources[attachTarget];
         if (isGradual)
         {
             audio.volume = 0;
             audio.UnPause();
             audio.DOFade(WorldVolume, 2);
         }
         else
         {
             audio.UnPause();
         }
     }
 }
예제 #7
0
 /// <summary>
 /// 播放世界音效
 /// </summary>
 /// <param name="attachTarget">附加目标</param>
 /// <param name="clip">音乐剪辑</param>
 public void PlayWorldSound(GameObject attachTarget, AudioClip clip)
 {
     if (WorldSources.ContainsKey(attachTarget))
     {
         AudioSource audio = WorldSources[attachTarget];
         if (audio.isPlaying)
         {
             audio.Stop();
         }
         audio.clip = clip;
         audio.Play();
     }
     else
     {
         AudioSource audio = AudioToolkit.AttachAudioSource(attachTarget, WorldPriority, WorldVolume, 1, 1, Mute);
         WorldSources.Add(attachTarget, audio);
         audio.clip = clip;
         audio.Play();
     }
 }