u3d UGUI 拖动图片

来源:互联网 发布:安卓lua 虚拟按键源码 编辑:程序博客网 时间:2024/06/05 01:43

在使用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有详细的案例.

1 0
原创粉丝点击