TimeLineAudioEventLogic.cs 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. using Core.Audio;
  2. using Fort23.UTool;
  3. using Utility.CustomizeTimeLogic.FxLogic.TimeLineEvent;
  4. using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
  5. #if !COMBAT_SERVER
  6. using UnityEngine.EventSystems;
  7. using CombatLibrary.CombatLibrary.CombatCore.Utility;
  8. using UnityEngine;
  9. #endif
  10. namespace UTool.CustomizeTimeLogic.FxLogic.TimeLineEventLogic
  11. {
  12. public class TimeLineAudioEventLogic : TimeLineEventLogicBasic
  13. {
  14. private AudioSourcePool audioSourcePool;
  15. private bool _Finish;
  16. protected override void ProSetCombatInfo()
  17. {
  18. }
  19. protected override async void ProEnter()
  20. {
  21. #if !COMBAT_SERVER
  22. _Finish = false;
  23. TimeLineAudioSeralization timeLineAudioSeralization =
  24. mTimeLineAssetSerialization as TimeLineAudioSeralization;
  25. if (!string.IsNullOrEmpty(timeLineAudioSeralization.audioName))
  26. {
  27. ITimeLineAudio iTimeLineSkillStart =
  28. TimeLineSingletonEventManager.Instance.GetTimeLine<ITimeLineAudio>();
  29. if (iTimeLineSkillStart != null)
  30. {
  31. AudioSourcePool audioSourcePool = await iTimeLineSkillStart.PlayAudio(
  32. timeLineAudioSeralization.audioName,
  33. timeLineAudioSeralization.isLoop);
  34. if (timeLineAudioSeralization.isLoop)
  35. {
  36. this.audioSourcePool = audioSourcePool;
  37. }
  38. if (audioSourcePool != null)
  39. {
  40. audioSourcePool.TimeLineAudioEventLogic = this;
  41. }
  42. if (_Finish && audioSourcePool != null)
  43. {
  44. audioSourcePool.Finish();
  45. this.audioSourcePool = null;
  46. }
  47. }
  48. }
  49. #endif
  50. }
  51. protected override void ProLeave()
  52. {
  53. }
  54. public override bool IsFinish()
  55. {
  56. if (this.audioSourcePool != null && this.audioSourcePool.TimeLineAudioEventLogic == this)
  57. {
  58. return false;
  59. }
  60. return base.IsFinish();
  61. }
  62. protected override void ProTimeUpdate()
  63. {
  64. }
  65. protected override void ProBreakTimeLine()
  66. {
  67. if (this.audioSourcePool != null && this.audioSourcePool.TimeLineAudioEventLogic == this)
  68. {
  69. this.audioSourcePool.Finish();
  70. }
  71. _Finish = true;
  72. audioSourcePool = null;
  73. }
  74. public override void CloseLoopFx()
  75. {
  76. if (this.audioSourcePool != null && this.audioSourcePool.TimeLineAudioEventLogic == this)
  77. {
  78. this.audioSourcePool.Finish();
  79. }
  80. _Finish = true;
  81. audioSourcePool = null;
  82. }
  83. protected override void ProDispose()
  84. {
  85. if (this.audioSourcePool != null && this.audioSourcePool.TimeLineAudioEventLogic == this)
  86. {
  87. this.audioSourcePool.Finish();
  88. }
  89. _Finish = true;
  90. audioSourcePool = null;
  91. }
  92. }
  93. }