12345678910111213141516171819202122232425262728293031 |
- using System;
- using UnityEngine;
- namespace Blue
- {
- public static class IChainEventUnSubcribeExtension
- {
- private static ITypeEventSystem _typeEventSystem;
- public static void SetEventSystem(ITypeEventSystem typeEventSystem)
- {
- _typeEventSystem = typeEventSystem;
- }
- public static void UnSubscribeAllEventOnGameobjectDestroyed(this IChainEventUnSubscribe unSubscribe, GameObject gameObject)
- {
- var trigger = gameObject.GetComponent<UnSubscribeChainEventOnDestroyTrigger>();
- if (!trigger)
- {
- trigger = gameObject.AddComponent<UnSubscribeChainEventOnDestroyTrigger>();
- }
- trigger.AddUnSubscribe(unSubscribe);
- }
- public static IChainEventUnSubscribe NextEvent<T>(this IChainEventUnSubscribe self,Action<T> onEvent) where T:IEvent
- {
- return _typeEventSystem.SubscribeChainEvent(self.GetChainEventType(),onEvent);
- }
- public static void UnSubscribeAllEventsOnChain(this IChainEventUnSubscribe self)
- {
- _typeEventSystem.UnSubscribeChainEvent(self.GetChainEventType());
- }
- }
- }
|