OnTriggerExitEventTrigger.cs 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. /****************************************************************************
  2. * Copyright (c) 2016 - 2022 liangxiegame UNDER MIT License
  3. *
  4. * https://qframework.cn
  5. * https://github.com/liangxiegame/QFramework
  6. * https://gitee.com/liangxiegame/QFramework
  7. ****************************************************************************/
  8. using System;
  9. using UnityEngine;
  10. namespace Core.Triiger
  11. {
  12. public class OnTriggerExitEventTrigger : MonoBehaviour
  13. {
  14. public readonly EasyEvent<Collider, ITriggerEntity> OnTriggerEnterEvent =
  15. new EasyEvent<Collider, ITriggerEntity>();
  16. private void OnTriggerExit(Collider collider)
  17. {
  18. TriggerEntityMono onTriggerEnterEventTrigger = collider.GetComponent<TriggerEntityMono>();
  19. ITriggerEntity triggerEntity = null;
  20. if (onTriggerEnterEventTrigger != null)
  21. {
  22. triggerEntity = onTriggerEnterEventTrigger.triggerEntity;
  23. }
  24. OnTriggerEnterEvent.Trigger(collider, triggerEntity);
  25. }
  26. }
  27. public static class OnTriggerExitEventTriggerExtension
  28. {
  29. // public static IUnRegister OnTriggerEnterEvent<T>(this T self, Action<Collider> onTriggerEnter)
  30. // where T : Component
  31. // {
  32. // return self.GetOrAddComponent<OnTriggerEnterEventTrigger>().OnTriggerEnterEvent
  33. // .Register(onTriggerEnter);
  34. // }
  35. public static IUnRegister OnTriggerExitEvent(this GameObject self, ITriggerEntity triggerEntity,
  36. Action<Collider, ITriggerEntity> onTriggerEnter)
  37. {
  38. OnTriggerExitEventTrigger onTriggerEnterEventTrigger =
  39. self.GetOrAddComponent<OnTriggerExitEventTrigger>();
  40. onTriggerEnterEventTrigger.OnTriggerEnterEvent.Close();
  41. TriggerEntityMono TriggerEntityMono =
  42. self.GetOrAddComponent<TriggerEntityMono>();
  43. TriggerEntityMono.triggerEntity= triggerEntity;
  44. return onTriggerEnterEventTrigger.OnTriggerEnterEvent
  45. .Register(onTriggerEnter);
  46. }
  47. }
  48. }