using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; namespace WS { ///按下 public enum PointerEventType { ///按下 OnDown, ///抬起 OnUp, ///进入 OnEnter, ///退出 OnExit } ///指针事件管理 public class PointerEventComponent : WSComponent { //所有指针事件 private Dictionary AllPointerEvent = new Dictionary(); /// 给物体(UI)添加指针事件 /// UI /// 指针类型 /// 回调 public void AddPointerEvent(GameObject ui, PointerEventType type, UnityAction callback) { if (!AllPointerEvent.ContainsKey(ui)) { PointerEventMono component = ui.AddComponent(); AllPointerEvent.Add(ui, component); } PointerEventMono pointer = AllPointerEvent[ui]; switch (type) { case PointerEventType.OnDown: pointer.OnDown = callback; break; case PointerEventType.OnUp: pointer.OnUp = callback; break; case PointerEventType.OnEnter: pointer.OnEnter = callback; break; case PointerEventType.OnExit: pointer.OnExit = callback; break; } } public override void Dispose() { base.Dispose(); foreach (var item in AllPointerEvent) { UnityEngine.Object.Destroy(item.Value); } AllPointerEvent.Clear(); } } }