private void Update() { if (_mouseDown) { // Check for drag release if (Input.GetMouseButtonUp(0)) { // Touch ended; cancel tracking _mouseDown = false; _lastPosition = Vector3.zero; if (DragEnded != null) { DragEnded.Invoke(Input.mousePosition); } } else if (_lastPosition != Input.mousePosition) { // Touch still occuring and moved if (DragMoved != null) { DragMoved.Invoke(_lastPosition - Input.mousePosition); } _lastPosition = Input.mousePosition; } } else if (Input.GetMouseButtonDown(0)) { // Otherwise, start tracking the first touch to begin _lastPosition = Input.mousePosition; _mouseDown = true; if (DragBegan != null) { DragBegan.Invoke(_lastPosition); } } }
public void OnBeginDrag(PointerEventData eventData) { DragBegan?.Invoke(eventData, gameObject); }