IChainEventUnSubcribeExtension.cs 1.2 KB

12345678910111213141516171819202122232425262728293031
  1. using System;
  2. using UnityEngine;
  3. namespace Blue
  4. {
  5. public static class IChainEventUnSubcribeExtension
  6. {
  7. private static ITypeEventSystem _typeEventSystem;
  8. public static void SetEventSystem(ITypeEventSystem typeEventSystem)
  9. {
  10. _typeEventSystem = typeEventSystem;
  11. }
  12. public static void UnSubscribeAllEventOnGameobjectDestroyed(this IChainEventUnSubscribe unSubscribe, GameObject gameObject)
  13. {
  14. var trigger = gameObject.GetComponent<UnSubscribeChainEventOnDestroyTrigger>();
  15. if (!trigger)
  16. {
  17. trigger = gameObject.AddComponent<UnSubscribeChainEventOnDestroyTrigger>();
  18. }
  19. trigger.AddUnSubscribe(unSubscribe);
  20. }
  21. public static IChainEventUnSubscribe NextEvent<T>(this IChainEventUnSubscribe self,Action<T> onEvent) where T:IEvent
  22. {
  23. return _typeEventSystem.SubscribeChainEvent(self.GetChainEventType(),onEvent);
  24. }
  25. public static void UnSubscribeAllEventsOnChain(this IChainEventUnSubscribe self)
  26. {
  27. _typeEventSystem.UnSubscribeChainEvent(self.GetChainEventType());
  28. }
  29. }
  30. }