最近发现的一种鼠标与UI交互的一种事件方式
// Start is called before the first frame update
void Start()
{
AddEventTrigger(transform, EventTriggerType.PointerEnter, Enter);
AddEventTrigger(transform, EventTriggerType.PointerExit, Exit);
AddEventTrigger(transform, EventTriggerType.BeginDrag, BeginDrag);
AddEventTrigger(transform, EventTriggerType.EndDrag, DownDrag);
}
// Update is called once per frame
void Update()
{
}
public void Enter(BaseEventData arg0)
{
print("进入");
}
public void Exit(BaseEventData arg0)
{
print("离去");
}
public void BeginDrag(BaseEventData arg0)
{
print("开始拖拽");
}
public void DownDrag(BaseEventData arg0)
{
print("结束拖拽");
}
public void AddEventTrigger(Transform theObj, EventTriggerType type, UnityAction<BaseEventData> p)//注意参数类型;
{
EventTrigger zxc = theObj.GetComponent<EventTrigger>();//判断有没有EventTrigger,把所有事件都集合在一个EventTrigger下。
if (zxc == null)
{
zxc = theObj.gameObject.AddComponent<EventTrigger>();
}
EventTrigger.Entry qwe = new EventTrigger.Entry();
qwe.eventID = type;
qwe.callback.AddListener(p);
zxc.triggers.Add(qwe);
}
挂载需要交互的UGUI上
void Start()
{
AddEventTrigger(transform, EventTriggerType.BeginDrag, BeginDrag);
AddEventTrigger(transform, EventTriggerType.EndDrag, EndDrag);
}
private void EndDrag(BaseEventData arg0)
{
}
private void BeginDrag(BaseEventData arg0)
{
}
// Update is called once per frame
void Update()
{
}
public void AddEventTrigger(Transform theObj, EventTriggerType type, UnityAction<BaseEventData> p)//注意参数类型;
{
EventTrigger zxc = theObj.GetComponent<EventTrigger>();//判断有没有EventTrigger,把所有事件都集合在一个EventTrigger下。
if (zxc == null)
{
zxc = theObj.gameObject.AddComponent<EventTrigger>();
}
EventTrigger.Entry qwe = new EventTrigger.Entry();
qwe.eventID = type;
qwe.callback.AddListener(p);
zxc.triggers.Add(qwe);
}
ScrRect滑动监听
脚本放在ScrRect组件的物体上