Unity - 마우스 드래그 가능
1457 단어 unity
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에 걸립니다.