UGUI에서 마약에 대해서 조금 더 자세히 설명해 드릴게요.
실현을 해보도록 하겠습니다.
Hierarchy
Canvas를 추가했고 그 밑에 Image를 넣었어요.
Script
TestDrag.csusing UnityEngine;
using UnityEngine.EventSystems;
public class TestDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
{
// ドラックが開始したとき呼ばれる.
public void OnBeginDrag(PointerEventData eventData)
{
Debug.Log(1);
}
// ドラック中に呼ばれる.
public void OnDrag(PointerEventData eventData)
{
Debug.Log(2);
}
// ドラックが終了したとき呼ばれる.
public void OnEndDrag(PointerEventData eventData)
{
Debug.Log(3);
}
}
이런 느낌.
포인트는 이비긴드래그핸들러, 아이드래그핸들러, 아이언드래그핸들러 3개 인터페이스를 계승하는 것이다.
IEndDragHandler만 물려받아 해봤는데 반응이 없어서 살짝 박아놨어요.
어쨌든 핸들러 계열 3개만 물려받으면 된다.
나는 이것을 Image에 부쳤다.
Game
흰색 그림을 드래그하면 로그가 나타납니다!
아는 것이 좋다
Drag Threshold
이동 시간 후 드래그 앤 드롭을 설정할 수 있습니다.
화면 좌표의 이전 프레임에서 온 이동량 이벤트 데이터입니다.delt
// ドラックが終了したとき呼ばれる.
public void OnEndDrag(PointerEventData eventData)
{
Debug.Log(eventData.delta);
}
On EndDrag에서 얼마나 많은 양을 끌어당겼는지 자주 사용한다.
eventData.델타를 사용할 수 있습니다.반환 값은 Vector2입니다.
문서를 봐도 잘 모르겠지만'화면 좌표에 있는 이전 프레임의 이동량'을 나타내는 것 같다.
빠르게 움직일 때 값이 많아지는 셈이다.
using UnityEngine;
using UnityEngine.EventSystems;
public class TestDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
{
// ドラックが開始したとき呼ばれる.
public void OnBeginDrag(PointerEventData eventData)
{
Debug.Log(1);
}
// ドラック中に呼ばれる.
public void OnDrag(PointerEventData eventData)
{
Debug.Log(2);
}
// ドラックが終了したとき呼ばれる.
public void OnEndDrag(PointerEventData eventData)
{
Debug.Log(3);
}
}
Drag Threshold
이동 시간 후 드래그 앤 드롭을 설정할 수 있습니다.
화면 좌표의 이전 프레임에서 온 이동량 이벤트 데이터입니다.delt
// ドラックが終了したとき呼ばれる.
public void OnEndDrag(PointerEventData eventData)
{
Debug.Log(eventData.delta);
}
On EndDrag에서 얼마나 많은 양을 끌어당겼는지 자주 사용한다.eventData.델타를 사용할 수 있습니다.반환 값은 Vector2입니다.
문서를 봐도 잘 모르겠지만'화면 좌표에 있는 이전 프레임의 이동량'을 나타내는 것 같다.
빠르게 움직일 때 값이 많아지는 셈이다.
한 5 정도 적당할 것 같아요.
eventData.button
// ドラックが開始したとき呼ばれる.
public void OnBeginDrag(PointerEventData eventData)
{
Debug.Log(eventData.button);
if (eventData.button != PointerEventData.InputButton.Left) return;
}
여기 button은 InputButon 열거형입니다.Left, Right, Middle이 있습니다.기본적으로 컴퓨터만 있는데 마우스 등으로'왼쪽 단추를 누르고 끌어당기기'를 하면'레프트'가 답한다.
실용성, Left 이외의 리턴은 기다리면 되죠.
좌표를 로컬 좌표로 변환
Vector2 localPos = Vector2.zero;
RectTransformUtility.ScreenPointToLocalPointInRectangle(
GetComponent<RectTransform>(),
eventData.position,
Camera.main,
out localPos
);
Canvas의 Render Mode가 "Screen Space-Camera"인 경우 위에서 설명한 localPos 값으로 변환됩니다.나는 아직 알아야 할 일을 잘 모르지만 알면 곧 추기한다.
Reference
이 문제에 관하여(UGUI에서 마약에 대해서 조금 더 자세히 설명해 드릴게요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/okuhiiro/items/4c313038798da6923205텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)