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();
}
}
}