반응형
✔ Unity3D - MouseEvent
DoubleClick Script - Object, UI
3D 오브젝트의 지원되는 마우스 이벤트의 경우 OnMouseDown(), OnMouseUp(), OnMouseOver() 등등이 있다.
다른건 다 있는데 클릭이나, 더블클릭 같은 경우에는 지원되지 않아 직접 만들어서 사용해야한다.
(지원좀 해주지... )
먼저 지원되는 기본적인 마우스 이벤트부터 알아보자
OnMouseDown() : 마우스가 눌러졌을때 발생되는 이벤트
OnMouseUp() : 마우스가 눌러진 상태에서 놓았을때 발생되는 이벤트
OnMouseEnter() : 마우스가 해당 객체의 콜라이더 범위에 들어왔을때 이벤트
OnMouseExit() : 마우스가 해당 객체의 콜라이더 범위에 밖으로 빠져나갔을때 이벤트
OnMouseOver() : 마우스가 해당 객체의 콜라이더 범위에 존재할때 발생되는 이벤트
(OnMouseEnter랑 비슷해보이지만 Enter는 콜라이더 안으로 진입할때 한번만 발생되지만 Over는 계속발생)
위 이벤트가 발생되기 위해서는 객체가 콜라이더를 포함하고 있어야 발생된다.
아래는 더블클릭 이벤트를 제작한 스크립트다.
특정 타임안에서 두번 Up이벤트가 발생되면 더블클릭을 판단한다.
● 더블클릭 이벤트 코드 ( 3D 오브젝트 )
using UnityEngine;
public class InputControl : MonoBehaviour
{
float clickTime = 0;
void OnMouseUp()
{
if ((Time.time - doubleClickStart) < 0.3f)
{
OnMouseDoubleClick();
clickTime = -1;
}
else
{
clickTime = Time.time;
}
}
void OnMouseDoubleClick()
{
Debug.Log("Double Clicked!");
}
}
● 더블클릭 (UI 오브젝트)
- 3D 오브젝트와 크게 다르지 않다. OnMouseUp 대신 IPointerClickHandler 인터페이스로 구현한다.
using UnityEngine;
using UnityEngine.EventSystems;
public class InputControl : MonoBehaviour, IPointerClickHandler
{
float clickTime = 0;
void OnMouseDoubleClick()
{
Debug.Log("Double Clicked!");
}
public void OnPointerClick(PointerEventData eventData)
{
if ((Time.time - clickTime) < 0.3f)
{
OnMouseDoubleClick();
clickTime = -1;
}
else
{
clickTime = Time.time;
}
}
}
감사합니다.
반응형
'Programming > Unity' 카테고리의 다른 글
[Unity3D] 유니티에서 Timer 구현하기 - IEnumerator, System.Timers (0) | 2022.01.11 |
---|---|
[Unity3D] 스크립트에서 UI 크기 변경 - RectTransform(stretch 포함) (0) | 2022.01.06 |
[Unity3D] Unity에서 MSSQL 연동 및 사용하기 , 빌드 후 Encoding 949 문제 해결 (0) | 2021.11.07 |
[Unity] URP - Lit Shader Properties 런타임에서 변경 (4) | 2021.06.11 |
[Unity] .mtl file 이란? (2) | 2021.05.18 |
댓글