Unity - 마우스 드래그 가능

1457 단어 unity
마우스 드래그는 UI 객체에만 사용할 수 있는 것 같습니다. 잠시 그런 것 같습니다. 오류가 있으면 나중에 업데이트하겠습니다.
1: NGUI 구현
NGUI는 OndragRelease () 방법을 직접 덮어쓰기만 하면 더욱 간단합니다.
// 
protected override void OnDragDropRelease(GameObject surface)
{
}

아무것도 쓰지 않아도 끌림이 이루어진다.
2. 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);
    }

    /// 
    /// set position of the dragged game object
    /// 
    /// 
    private void SetDraggedPosition(PointerEventData eventData)
    {
        var rt = gameObject.GetComponent();

        // 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에 걸립니다.

좋은 웹페이지 즐겨찾기