ManaAudio.cs 2.7 KB

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