u3d UGUI 拖动图片

在使用uGUI制作图片的拖动,或者说是其他控件的拖动,

分为两部分,需写两个脚本分别给相应的控件.

一:被拖动的控件.

二 :被拖动的物体到其他控件上面

-------------------------------------------------------------


一.被拖动的控件 的c#脚本 需实现 IBeginDragHandler, IDragHandler, IEndDragHandler 这三个 接口

这三个接口分别对应了三个方法:

 public void OnBeginDrag(PointerEventData eventData) // 点击鼠标 按住不放 拖动开始

 public void OnDrag(PointerEventData data) //拖动中,不断执行,直到鼠标鼠标抬起来 <再次方法里头实现物体跟随鼠标移动即可>

附上 鼠标移动跟随鼠标移动代码 

 var rt = m_DraggingPlane;
        Vector3 globalMousePos;
        if (RectTransformUtility.ScreenPointToWorldPointInRectangle(m_DraggingPlane, data.position, data.pressEventCamera, out globalMousePos))
        {
            rt.position = globalMousePos;
            rt.rotation = m_DraggingPlane.rotation;
        }

 public void OnEndDrag(PointerEventData eventData) // 拖动完毕,就是抬下鼠标后执行..


二 :被拖动的物体碰到其他的物体 接受被碰撞事件 

这里依旧使用c#脚本 实现IDropHandler, IPointerEnterHandler, IPointerExitHandler 这三个接口即可.

三个接口分别对应三个方法

 public void OnDrop(PointerEventData eventData)
    {
        Debug.Log("OnDrop");
        // 在 上面松开鼠标

    }

    public void OnPointerEnter(PointerEventData eventData)
    {
        Debug.Log("OnPointerEnter");
        // 鼠标进入 

        // 将拖动的图片赋值给碰到的控件
        var t=eventData.pointerDrag;//t类似gameobject
        Image img= t.GetComponent<Image>();
        GetComponent<Image>().sprite = img.sprite;
    }

    public void OnPointerExit(PointerEventData eventData)
    {
        Debug.Log("OnPointerExit");
        //鼠标离开
    }



至此,完毕.....可以参考UGUI提供的demo.....demo有详细的案例.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值