将脚本拖到需要实现拖拽功能的UI图片上即可
话不多说直接上代码
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
public class UIDragByMocha : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
{
[Header("是否精准拖拽")]
public bool m_isPrecision;
//存储图片中心点与鼠标点击点的偏移量
private Vector3 m_offset;
//存储当前拖拽图片的RectTransform组件
private RectTransform m_rt;
void Start()
{
//初始化
m_rt = gameObject.GetComponent<RectTransform>();
}
//开始拖拽触发
public void OnBeginDrag(PointerEventData eventData)
{
//如果精准拖拽则进行计算偏移量操作
if(m_isPrecision)
{
//存储点击时的鼠标坐标
Vector3 tWorldPos;
//UI屏幕坐标转换为世界坐标
RectTransformUtility.ScreenPointToWorldPointInRectangle(m_rt, eventData.position, eventData.pressEventCamera, out tWorldPos);
//计算偏移量
m_offset = transform.position - tWorldPos;
}
//否则 默认偏移量为0
else
{
m