ManaAudio.cs 2.9 KB

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