//UI事件监听插件
public class PEListener : MonoBehaviour, IPointerDownHandler, IPointerUpHandler, IDragHandler,IPointerClickHandler
{
public Action onClickDown;
public Action onClickUp;
public Action onDrag;
public Action onClick;
public object args;
public void OnPointerClick(PointerEventData eventData)
{
if (onClick != null)
{
onClick(args);
}
}
public void OnPointerDown(PointerEventData eventData)
{
if (onClickDown != null)
{
onClickDown(eventData);
onDrag(eventData);
}
}
public void OnPointerUp(PointerEventData eventData)
{
if (onClickUp != null)
{
onClickUp(eventData);
}
}
public void OnDrag(PointerEventData eventData)
{
if (onDrag != null)
{
onDrag(eventData);
}
}
public void RegisterTouchEvts()
{
OnClickDown(imgTouch.gameObject, (PointerEventData evt) =>
{
startPos = evt.position;
SetActive(imgDirPoint);
imgDirbg.transform.position = evt.position;
});
OnClickUp(imgTouch.gameObject, (PointerEventData evet) =>
{
//defaultPos 默认位置
imgDirbg.transform.position = defaultPos;
SetActive(imgDirPoint,false );
imgDirPoint.transform.localPosition = Vector2.zero;
//方向信息传递
MainCitySys.Instance.SetMoveDir(Vector2.zero);
});
OnDrag(imgTouch.gameObject, (PointerEventData evet) =>
{
Vector2 dir = evet.position - startPos;
float length = dir.magnitude;
if (length > Constant.ScreenOPDis)//***
{
//把距离限制在控制距离内
Vector2 clampDir = Vector2.ClampMagnitude(dir, Constant.ScreenOPDis);
imgDirPoint.transform.position = startPos + clampDir;
}
else
{
imgDirPoint.transform.position = evet.position;
}
MainCitySys.Instance.SetMoveDir(dir.normalized);
});