ManaAudio.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. using UnityEngine;
  2. using System.Collections;
  3. public class ManaAudio : Regist
  4. {
  5. #region 变量
  6. public static ManaAudio Instance;
  7. public static bool Music;
  8. public static bool Audio;
  9. public static Transform AudioParent;
  10. public static Transform MusicParent;
  11. public static Coroutine CoroTheme;
  12. public static Coroutine CoroMiniGame;
  13. public static AudioSource MusicMini;
  14. public static AudioSource MusicTheme;
  15. #endregion
  16. public override void Instantiate()
  17. {
  18. MusicParent = new GameObject("Music").transform;
  19. ManaReso.Get("MusicMini", Folder.Object, true, MusicParent, true);
  20. ManaReso.Get("MusicTheme", Folder.Object, true, MusicParent, true);
  21. }
  22. public override void RegistValueA()
  23. {
  24. Instance = this;
  25. Music = true;
  26. Audio = true;
  27. #region MusicMini
  28. Transform tra = MusicMini.transform;
  29. TweenAudio tween = tra.CreateTweenAudio(1, 2f, true, true, Curve.EaseOutQuad);
  30. tween.OnForwardStart += () =>
  31. {
  32. MusicMini.Play();
  33. CoroTheme = StartCoroutine(Loop(MusicMini));
  34. };
  35. tween.OnBackwardStart += () =>
  36. {
  37. StopCoroutine(CoroTheme);
  38. };
  39. #endregion
  40. #region MusicTheme
  41. tra = MusicTheme.transform;
  42. tween = tra.CreateTweenAudio(1, 2f, true, true, Curve.EaseOutQuad);
  43. tween.OnForwardStart += () =>
  44. {
  45. MusicTheme.Play();
  46. CoroTheme = StartCoroutine(Loop(MusicTheme));
  47. };
  48. tween.OnBackwardStart += () =>
  49. {
  50. StopCoroutine(CoroTheme);
  51. };
  52. #endregion
  53. ManaReso.Get("MusicTheme").TweenForAudio();
  54. }
  55. public override void RegistReference()
  56. {
  57. MusicMini = ManaReso.Get<AudioSource>("MusicMini");
  58. MusicTheme = ManaReso.Get<AudioSource>("MusicTheme");
  59. }
  60. public override void TutorialInstantiate()
  61. {
  62. Instantiate();
  63. }
  64. public override void TutorialRegistValue()
  65. {
  66. RegistValueA();
  67. }
  68. public override void TutorialRegistReference()
  69. {
  70. RegistReference();
  71. }
  72. public void MusicSwitch()
  73. {
  74. if (Music)
  75. {
  76. Music = false;
  77. ManaReso.SetActive("L_MusicOn", false);
  78. ManaReso.SetActive("L_MusicOff", true);
  79. MusicParent.SetActive(false);
  80. StopCoroutine(CoroTheme);
  81. }
  82. else
  83. {
  84. Music = true;
  85. ManaReso.SetActive("L_MusicOn", true);
  86. ManaReso.SetActive("L_MusicOff", false);
  87. MusicParent.SetActive(true);
  88. MusicTheme.TweenForAudio();
  89. }
  90. }
  91. public void AudioSwitch()
  92. {
  93. if (Audio)
  94. {
  95. Audio = false;
  96. ManaReso.SetActive("L_AudioOn", false);
  97. ManaReso.SetActive("L_AudioOff", true);
  98. }
  99. else
  100. {
  101. Audio = true;
  102. ManaReso.SetActive("L_AudioOn", true);
  103. ManaReso.SetActive("L_AudioOff", false);
  104. }
  105. }
  106. private IEnumerator Loop(AudioSource audioSource)
  107. {
  108. while (true)
  109. {
  110. while (audioSource.isPlaying)
  111. {
  112. yield return null;
  113. }
  114. yield return new WaitForSeconds(3);
  115. audioSource.Play();
  116. }
  117. }
  118. }