using UnityEngine; using System.Collections; public class ManaAudio : Regist { #region 变量 public static bool Audio; public static bool Music; public static Coroutine CoroTheme; public static Coroutine CoroMiniGame; public static Transform AudioParent; public static Transform MusicParent; public static ManaAudio Instance; public static AudioSource MusicMini; public static AudioSource MusicTheme; #endregion public override void Instantiate() { MusicParent = new GameObject("Music").transform; ManaReso.Get("MusicMini", Folder.Object, true, MusicParent, true); ManaReso.Get("MusicTheme", Folder.Object, true, MusicParent, true); } public override void RegistValueA() { Audio = true; Music = true; Instance = this; #region MusicMini Transform tra = MusicMini.transform; TweenAudio tween = tra.CreateTweenAudio(1, 2f, true, true, Curve.EaseOutQuad); tween.OnForwardStart += () => { MusicMini.Play(); CoroTheme = StartCoroutine(Loop(MusicMini)); }; tween.OnBackwardStart += () => { StopCoroutine(CoroTheme); }; #endregion #region MusicTheme tra = MusicTheme.transform; tween = tra.CreateTweenAudio(1, 2f, true, true, Curve.EaseOutQuad); tween.OnForwardStart += () => { MusicTheme.Play(); CoroTheme = StartCoroutine(Loop(MusicTheme)); }; tween.OnBackwardStart += () => { StopCoroutine(CoroTheme); }; #endregion ManaReso.Get("MusicTheme").TweenForAudio(); } public override void RegistReference() { MusicMini = ManaReso.Get("MusicMini"); MusicTheme = ManaReso.Get("MusicTheme"); } public override void TutorialInstantiate() { Instantiate(); } public override void TutorialRegistValue() { RegistValueA(); } public override void TutorialRegistReference() { RegistReference(); } public void MusicSwitch() { if (Music) { Music = false; ManaReso.SetActive("L_MusicOn", false); ManaReso.SetActive("L_MusicOff", true); MusicParent.SetActive(false); StopCoroutine(CoroTheme); } else { Music = true; ManaReso.SetActive("L_MusicOn", true); ManaReso.SetActive("L_MusicOff", false); MusicParent.SetActive(true); MusicTheme.TweenForAudio(); } } public void AudioSwitch() { if (Audio) { Audio = false; ManaReso.SetActive("L_AudioOn", false); ManaReso.SetActive("L_AudioOff", true); } else { Audio = true; ManaReso.SetActive("L_AudioOn", true); ManaReso.SetActive("L_AudioOff", false); } } public IEnumerator Loop(AudioSource audioSource) { while (true) { while (audioSource.isPlaying) { yield return null; } yield return new WaitForSeconds(3); audioSource.Play(); } } }