TimeLineAudioEventLogic.cs 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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. protected override void ProSetCombatInfo()
  16. {
  17. }
  18. protected override async void ProEnter()
  19. {
  20. #if !COMBAT_SERVER
  21. TimeLineAudioSeralization timeLineAudioSeralization =
  22. mTimeLineAssetSerialization as TimeLineAudioSeralization;
  23. if (!string.IsNullOrEmpty(timeLineAudioSeralization.audioName))
  24. {
  25. ITimeLineAudio iTimeLineSkillStart =
  26. TimeLineSingletonEventManager.Instance.GetTimeLine<ITimeLineAudio>();
  27. if (iTimeLineSkillStart != null)
  28. {
  29. AudioSourcePool audioSourcePool = await iTimeLineSkillStart.PlayAudio(
  30. timeLineAudioSeralization.audioName,
  31. timeLineAudioSeralization.isLoop);
  32. if (timeLineAudioSeralization.isLoop)
  33. {
  34. this.audioSourcePool = audioSourcePool;
  35. }
  36. if (audioSourcePool != null)
  37. {
  38. audioSourcePool.TimeLineAudioEventLogic = this;
  39. }
  40. }
  41. }
  42. #endif
  43. }
  44. protected override void ProLeave()
  45. {
  46. }
  47. public override bool IsFinish()
  48. {
  49. if (this.audioSourcePool != null && this.audioSourcePool.TimeLineAudioEventLogic == this)
  50. {
  51. return false;
  52. }
  53. return base.IsFinish();
  54. }
  55. protected override void ProTimeUpdate()
  56. {
  57. }
  58. protected override void ProBreakTimeLine()
  59. {
  60. if (this.audioSourcePool != null && this.audioSourcePool.TimeLineAudioEventLogic == this)
  61. {
  62. this.audioSourcePool.Finish();
  63. }
  64. audioSourcePool = null;
  65. }
  66. public override void CloseLoopFx()
  67. {
  68. if (this.audioSourcePool != null && this.audioSourcePool.TimeLineAudioEventLogic == this)
  69. {
  70. this.audioSourcePool.Finish();
  71. }
  72. audioSourcePool = null;
  73. }
  74. protected override void ProDispose()
  75. {
  76. if (this.audioSourcePool != null && this.audioSourcePool.TimeLineAudioEventLogic == this)
  77. {
  78. this.audioSourcePool.Finish();
  79. }
  80. audioSourcePool = null;
  81. }
  82. }
  83. }