纯净版
public class PureDrag : MonoBehaviour, IDragHandler, IEndDragHandler
{
private Canvas canvas;
private const string UGUI_CanvasPath = "Root/_GameManager(Clone)/UGUISystem";//UGUI 画布的 场景 路径
private void Start()
{
if (canvas == null)
{
var canvasObj = GameObject.Find(UGUI_CanvasPath);
if (canvasObj != null)
{
canvas = canvasObj.GetComponent<Canvas>();
}
}
}
public void OnDrag(PointerEventData eventData)
{
((RectTransform)transform).anchoredPosition += (eventData.delta / canvas.scaleFactor);
}
}
OnPointUp 不仅鼠标松开会调用,鼠标移动也会调用。
优化了拖拽的行为,仔细看canvas.scaleFactor
有一种更好的设计简化代码
检测区域作为一个类,PureDrag一个类,然后用2D刚体的碰撞检测
EventSystem 查看当前指针射线下是否是当前物体