private void playBGMDefaultAdvance(string audioSource, string musicName, AudioLoop.LoopType loopType, float start, float end) { var audioSourceData = audioSources.GetAudio(audioSource); AudioSource audio = audioSourceData.audio; AudioLoopCallbacks callback = audioSourceData.callback; ClipDetail clipDetail = audioLibrary.GetBGMClip(musicName); if (!audio) { var source = setNewAudioSource(audioSource, true); audio = source.audio; callback = source.callback; } if (audio.isPlaying) { stopBGMPlayed(audio, clipDetail, callback, true); } audio.loop = true; audio.clip = clipDetail.clip; audio.volume = globalBGMVolume * clipDetail.localVolume; audioLoopFunction.SetAudioSource(ref audio, ref callback); audioLoopFunction.PlayLoops(loopType, start, end); }
private void playBGMTransitionAdvance(string audioSource, string musicName, AudioLoop.LoopType loopType, float start, float end) { var audioSourceData = audioSources.GetAudio(audioSource); AudioSource audio = audioSourceData.audio; AudioLoopCallbacks callback = audioSourceData.callback; if (!audio) { var source = setNewAudioSource(audioSource, true); audio = source.audio; callback = source.callback; } if (audio.isPlaying) { ClipDetail clipDetail = audioLibrary.GetBGMClip(audio.clip); DOVirtual.Float(1, 0, timeFade, (x) => { audio.volume = globalBGMVolume * clipDetail.localVolume * x; }).OnComplete(() => playBGMInTransitionAdvance(audio, musicName, loopType, start, end)); } else { playBGMInTransitionAdvance(audio, musicName, loopType, start, end); } }
private void playBGMInTransitionAdvance(AudioSource audio, string musicName, AudioLoop.LoopType loopType, float start, float end) { ClipDetail clipDetail = audioLibrary.GetBGMClip(musicName); audio.loop = true; audio.clip = clipDetail.clip; audio.volume = 0; audio.Play(); DOVirtual.Float(0, 1, timeFade, (x) => { audio.volume = globalBGMVolume * clipDetail.localVolume * x; }); }
private void playBGMAdvance(string audioSource, string musicName, AudioLoop.LoopType loopType, float start, float end, PlayType playType) { switch (playType) { case PlayType.TRANSITION: playBGMTransitionAdvance(audioSource, musicName, loopType, start, end); break; case PlayType.DEFAULT: playBGMDefaultAdvance(audioSource, musicName, loopType, start, end); break; } }
public static void PlayBGMAdvanced(string audioSource, string musicName, AudioLoop.LoopType loopType, float start, float end, PlayType playType = PlayType.TRANSITION) { Instance?.playBGMAdvance(audioSource, musicName, loopType, start, end, playType); }