123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235 |
- using UnityEngine;
- using System.Collections;
- using System.Collections.Generic;
- public enum Clip
- {
- BtnClip,
- SkillClip,
- ErrorClip,
- DropClip,
- CloseClip,
- FlowerClip,
- BubbleClip,
- CurrentClip,
- MiniEndClip,
- }
- public class ManaAudio : Regist
- {
- #region 变量
- public static bool Audio = true;
- public static bool Music = true;
- public static Coroutine CoroTheme;
- public static Coroutine CoroMiniGame;
- public static ManaAudio Instance;
- public static AudioClip BtnClip;
- public static AudioClip SkillClip;
- public static AudioClip ErrorClip;
- public static AudioClip DropClip;
- public static AudioClip CloseClip;
- public static AudioClip FlowerClip;
- public static AudioClip BubbleClip;
- public static AudioClip CurrentClip;
- public static AudioClip MiniEndClip;
- public static AudioSource MusicClip;
- public static AudioSource MusicMini;
- public static AudioSource MusicTheme;
- public static Dictionary<Clip, AudioClip> ClipDic = new Dictionary<Clip, AudioClip>();
- #endregion
- public override void Instantiate()
- {
- BtnClip = ManaReso.Load<AudioClip>("BtnClip", Folder.Audio);
- SkillClip = ManaReso.Load<AudioClip>("SkillClip", Folder.Audio);
- ErrorClip = ManaReso.Load<AudioClip>("ErrorClip", Folder.Audio);
- DropClip = ManaReso.Load<AudioClip>("DropClip", Folder.Audio);
- CloseClip = ManaReso.Load<AudioClip>("CloseClip", Folder.Audio);
- FlowerClip = ManaReso.Load<AudioClip>("FlowerClip", Folder.Audio);
- BubbleClip = ManaReso.Load<AudioClip>("BubbleClip", Folder.Audio);
- CurrentClip = ManaReso.Load<AudioClip>("CurrentClip", Folder.Audio);
- MiniEndClip = ManaReso.Load<AudioClip>("MiniEndClip", Folder.Audio);
- ManaReso.Get("Music", Folder.Audio, true, transform, true, ObjType.Music);
- }
- public override void RegistValueA()
- {
- Instance = this;
-
- #region ClipDic
- ClipDic.Add(Clip.BtnClip, BtnClip);
- ClipDic.Add(Clip.SkillClip, SkillClip);
- ClipDic.Add(Clip.ErrorClip, ErrorClip);
- ClipDic.Add(Clip.DropClip, DropClip);
- ClipDic.Add(Clip.CloseClip, CloseClip);
- ClipDic.Add(Clip.FlowerClip, FlowerClip);
- ClipDic.Add(Clip.BubbleClip, BubbleClip);
- ClipDic.Add(Clip.CurrentClip, CurrentClip);
- ClipDic.Add(Clip.MiniEndClip, MiniEndClip);
- #endregion
- #region MusicMini
- TweenAudio tween = MusicMini.CreateTweenAudio(1, 2f, true, true, Curve.EaseOutQuad);
- tween.OnForwardStart += () =>
- {
- if (Music)
- {
- MusicMini.Play();
- CoroMiniGame = StartCoroutine(Loop(MusicMini));
- }
- };
- tween.OnBackwardStart += () =>
- {
- if (Music)
- {
- StopCoroutine(CoroTheme);
- }
- };
- #endregion
- #region MusicTheme
- tween = MusicTheme.CreateTweenAudio(1, 2f, true, true, Curve.EaseOutQuad);
- tween.OnForwardStart += () =>
- {
- if (Music)
- {
- MusicTheme.Play();
- CoroTheme = StartCoroutine(Loop(MusicTheme));
- }
- };
- tween.OnBackwardStart += () =>
- {
- if (Music)
- {
- StopCoroutine(CoroTheme);
- }
- };
- #endregion
- MusicTheme.TweenForAudio();
- }
- public override void RegistReference()
- {
- AudioSource[] audioSources = ManaReso.Gets<AudioSource>("Music");
- MusicClip = audioSources[2];
- MusicMini = audioSources[1];
- MusicTheme = audioSources[0];
- }
- public static void PlayClip(Clip clip)
- {
- if (Audio)
- {
- AudioClip audioClip = ClipDic[clip];
- MusicClip.PlayOneShot(audioClip);
- }
- }
- public void MusicSwitch()
- {
- if (Music)
- {
- Music = false;
- ManaReso.SetActive("L_MusicOn", false);
- ManaReso.SetActive("L_MusicOff", true);
-
- MusicMini.Pause();
- MusicTheme.Pause();
- }
- else
- {
- Music = true;
- ManaReso.SetActive("L_MusicOn", true);
- ManaReso.SetActive("L_MusicOff", false);
- MusicMini.UnPause();
- MusicTheme.UnPause();
- }
- }
- 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)
- {
- Mark: yield return null;
- while (ManaCenter.Background)
- {
- goto Mark;
- }
- while (!audioSource.enabled)
- {
- goto Mark;
- }
-
- while (audioSource.isPlaying)
- {
- goto Mark;
- }
- while (!Music)
- {
- goto Mark;
- }
- yield return new WaitForSeconds(1.5f);
- audioSource.Play();
- }
- }
- }
- #region DebugList
- //从花园到小游戏
- //从小游戏到花园
- //从后台恢复
- //循环
- //静音
- #endregion
|