在使用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");
//鼠标离开
}