/// <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; } } }
/// <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(); } }
/// <summary> /// 停止播放指定的世界音效 /// </summary> /// <param name="attachTarget">附加目标</param> public void StopWorldSound(GameObject attachTarget) { if (WorldSources.ContainsKey(attachTarget)) { if (WorldSources[attachTarget].isPlaying) { WorldSources[attachTarget].Stop(); } } }
/// <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(); } } }
/// <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(); } } }
/// <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(); } }