unity背包拖拽功能

首先你要做好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;
	}	

}

猜你喜欢

转载自blog.csdn.net/Optimistic_lx/article/details/129412182