using UnityEngine; using UnityEngine.Events; public class MouseFingerEvent { public Vector2 position; public int index; } public class MouseFinger : MonoBehaviour { public UnityEvent OnInputBegin; public UnityEvent OnInputMove; public UnityEvent OnInputEnd; void Update() { handleMouse(0); handleMouse(1); handleMouse(2); handleTouches(); } private void handleTouches() { for (int finger = 0; finger < Input.touchCount; finger++) { var touch = Input.touches[finger]; var ev = new MouseFingerEvent { position = touch.position, index = finger }; if (touch.phase == TouchPhase.Began) { OnInputBegin.Invoke(ev) ; } if (touch.phase == TouchPhase.Began || touch.phase == TouchPhase.Moved) { OnInputMove.Invoke(ev); } if (touch.phase == TouchPhase.Ended) { OnInputEnd.Invoke(ev); } } } private void handleMouse(int button) { var ev = new MouseFingerEvent { position = Input.mousePosition, index = button }; if (Input.GetMouseButtonDown(button)) { OnInputBegin.Invoke(ev); } if(Input.GetMouseButton(button)) { OnInputMove.Invoke(ev); } if (Input.GetMouseButtonUp(button)) { OnInputEnd.Invoke(ev); } } }