YIUI3DDisplayClickHelper.cs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. using System;
  2. using UnityEngine;
  3. using YIUIFramework;
  4. namespace ET.Client
  5. {
  6. public static class YIUI3DDisplayClickHelper
  7. {
  8. /// <summary>
  9. /// 点击事件
  10. /// </summary>
  11. /// <param name="systemType"></param>
  12. /// <param name="self"></param>
  13. /// <param name="display">一个组件下多个3DDisplay时 用于区分</param>
  14. /// <param name="target">被点击的对象</param>
  15. /// <param name="root">他的最终父级是谁(显示对象)</param>
  16. public static void OnClick(Type systemType, Entity self, UI3DDisplay display, GameObject target, GameObject root)
  17. {
  18. var iEventSystems = EntitySystemSingleton.Instance.TypeSystems.GetSystems(self.GetType(), systemType);
  19. if (iEventSystems is not { Count: > 0 })
  20. {
  21. Log.Error($"类:{self.GetType().Name} 没有具体实现的事件 YIUI3DDisplayClick 请检查");
  22. return;
  23. }
  24. foreach (IYIUI3DDisplayClick eventSystem in iEventSystems)
  25. {
  26. try
  27. {
  28. eventSystem.OnClick(self, display, target, root);
  29. return;
  30. }
  31. catch (Exception e)
  32. {
  33. Log.Error($"类:{self.GetType().Name} 事件回调错误 YIUI3DDisplayClick 请检查 {e}");
  34. }
  35. }
  36. }
  37. }
  38. }