Unity—實現滑鼠拖拽
阿新 • • 發佈:2019-01-29
滑鼠拖拽好像只能用於UI物件,暫時好像是這樣的,如有誤,我後面會更新。
一:NGUI實現
NGUI的更簡單,只需直接覆寫OnDragRelease()方法
//拖拽結束時呼叫
protected override void OnDragDropRelease(GameObject surface)
{
}
什麼都不用寫就實現了拖拽。
二、UGUI實現
UGUI需要實現對應的介面,以及自己更新UI物件的座標,程式碼如下:
public class DragTest : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler { // begin dragging public void OnBeginDrag(PointerEventData eventData) { SetDraggedPosition(eventData); } // during dragging public void OnDrag(PointerEventData eventData) { SetDraggedPosition(eventData); } // end dragging public void OnEndDrag(PointerEventData eventData) { SetDraggedPosition(eventData); } /// <summary> /// set position of the dragged game object /// </summary> /// <param name="eventData"></param> private void SetDraggedPosition(PointerEventData eventData) { var rt = gameObject.GetComponent<RectTransform>(); // transform the screen point to world point int rectangle Vector3 globalMousePos; if (RectTransformUtility.ScreenPointToWorldPointInRectangle(rt, eventData.position, eventData.pressEventCamera, out globalMousePos)) { rt.position = globalMousePos; } } }
程式碼還是比較簡潔的。
需要注意的是:指令碼要掛在Canvas下的Image上。