首先你要做好ui布局,这里我用的是网格布局
要实现拖拽功能你还得添加这个主键
接下来就是脚本获取4个接口
ublic class Pictures : MonoBehaviour,IInitializePotentialDragHandler,IBeginDragHandler,IEndDragHandler,IDragHandler
{
//这里提供了4个接口
//IInitializePotentialDragHandler,IBeginDragHandler,IEndDragHandler,IDragHandler
void Start()
{
}
public void OnInitializePotentialDrag(PointerEventData eventData)//点击的那一刻
{
}
public void OnBeginDrag(PointerEventData eventData)//开始拖动的那一刻
{
//拖拽属性locksRaycasts false 可以拖拽 true 不可拖拽了
ca.blocksRaycasts = false;
}
public void OnDrag(PointerEventData eventData)//拖动过程中
{
//在拖拽中把拖拽物品的位置实时更新为当前鼠标的位置
transform.position = eventData.position;
//把拖拽的物品设置为这个位置的子物体
GameObject go = eventData.pointerEnter;
//transform.parent = go.transform;
transform.SetParent(go.transform, false);
}
public void OnEndDrag(PointerEventData eventData)//拖动结束
{
//tz 为图片预制体标签 bk 为背景标签
GameObject go = eventData.pointerEnter;//得到当前鼠标位置下的物体信息
ca.blocksRaycasts = true;
if (go.CompareTag("bk"))//判断拖拽结束时当下的标签为bk
{
//拖拽的物品设为你当前拖拽到位置的子级
transform.SetParent (go.transform, false);
//位置居中
transform.localPosition = Vector3.zero;
}
else if (go.CompareTag("tz"))//判断拖拽结束时当下的标签为tz
{
//接收拖拽到的位置的父级
Transform Cparent= go.transform.parent;//定义一个父节点的位置
//把拖拽到位置的对象的父级改为拖拽物品的父级
go.transform.parent=transform.parent;//设父级的属性
//位置居中
go.transform.localPosition=Vector3.zero;
//拖拽的物品设为你当前拖拽到位置的子级
transform.SetParent(Cparent, false);//设父级的方法
//位置居中
transform.localPosition = Vector3.zero;
}
}