using UnityEngine; public class MouseDragDistance : MonoBehaviour { private Vector3 startPosition; private Vector3 endPosition; private bool isDragging = false; public float distance = 100; // 当鼠标在物体上按下时调用 private void OnMouseDown() { isDragging = true; // 记录鼠标按下时的屏幕位置 startPosition = Input.mousePosition; } // 当鼠标在物体上拖动时持续调用 private void OnMouseDrag() { if (isDragging) { // 实时更新当前鼠标位置 endPosition = Input.mousePosition; float dragDistance = Vector3.Distance(startPosition, endPosition); if (TryGetComponent(out PC_DragEvent dragEvent)) { if(dragDistance > distance) { dragEvent.stay?.Invoke(gameObject); } } //Debug.Log("鼠标在物体上的拖拽距离为: " + dragDistance + " 像素"); } } // 当鼠标在物体上释放时调用 private void OnMouseUp() { isDragging = false; } }