본문 바로가기
게임 기획/Game Programming

[Unity/유니티] 유니티 드래그 앤 드롭

by 또리바리 2024. 11. 17.

 

◆ 필요한 기능

해당 오브젝트를 드래그 앤 드롭하여 드롭 위치로 옮기는 것

 

 

 

코드

UI 에 적용 가능한 코드

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;

public class Mousedrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
{
    public void OnBeginDrag(PointerEventData eventData)
    {
        Debug.Log("Begin Drag");
    }
    public void Ondrag(PointerEventData eventData)
    {
        transform.position = eventData.position;
    }

    public void OnDrag(PointerEventData eventData)
    {
        Debug.Log("Drop");
    }

    public void OnEndDrag(PointerEventData eventData)
    {
        Debug.Log("Begin Drag");
    }

}

 

 

한 번 돌리고 나니 문제점 발생

캐릭터 스크립트를 붙여도 콘솔에 로그가 찍히지 않음

 

스프라이트에는 디버그 로그가 안 찍힘...

 

 

 

아래와 같이 코드 다시 제작

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;

public class Mousedrag : MonoBehaviour
{
    private void Update()
    {
        
    }
    private void OnMouseDown()
    {
        Debug.Log("오브젝트 터치");
    }
    private void OnMouseDrag()
    {
        Vector2 mouseDragPosition = new Vector2(Input.mousePosition.x, Input.mousePosition.y);
        Vector2 worldObjectPosition = Camera.main.ScreenToWorldPoint(mouseDragPosition);
        this.transform.position = worldObjectPosition;
        Debug.Log("오브젝트 드래그");
    }
    private void OnMouseUp()
    {
        Debug.Log("오브젝트에서 손 뗌");
    }

}

위와 같이 코드 다시 입력 후 콘솔 확인

 

잘 되는 것을 확인할 수 있다.