게임 개발/Unity

[유니티 C#] UI 터치영역 - 마우스, 터치 이벤트 만들기

Heesuk Lee 2019. 7. 27. 22:19

이번 프로젝트를 진행하면서 겪은 시행착오를 공유하려고 합니다!

어려운것은 아니지만, 혹시 나중을 위해 정리해두겠습니다!

 

마우스 혹은 터치를 구현하게 되면 저 같은 경우에는 가장 먼저 생각나는것이

Input.GetMouseBottonDown()이나 Input.GetTouch()가 있었습니다.

 

 

<코드 예시>

터치에서 제가 주로 사용했던 Input.GetMouseButtonDown 메소드, 하지만 더 좋은 것이 있었다.

 

<결과>

스크립트를 컴포넌트로 가지고있는 TOUCH TOUCH 외부에서도 터치가 발생하는것을 볼 수 있습니다.

 

 

하지만 보시다시피 전체화면에서 발생하는 터치이벤트...

저에게 필요했던건 일정영역 안에서만 터치이벤트가 발생하는 것이었습니다.

 

그래서 찾아낸것이 IPointer 인터페이스입니다.

// EventSystems 네임스페이스를 사용해야 가능
using UnityEngine.EventSystems;

EventSystems 네임스페이스를 사용해서 스크립트에 원하는 Ipointer 이벤트핸들러를 상속받으면

인터페이스에 선언한 메소드를 구현하라고 친절하게 알려줍니다.

 

아래와 같이 메소드를 구현해주면 해당 스크립트를 컴포넌트로 지니고있는 오브젝트 혹은 UI에만

마우스 혹은 터치가 발생합니다.

 

 

<코드예시>

여러가지 인터페이스가 존재하니 필요한것을 찾아서 사용하면 좋을것 같습니다!

 

<결과>

TOUCHTOUCH가 있는 패널에만 마우스 혹은 터치 이벤트가 발생하는것을 볼 수 있습니다.

 

 

이렇게 되면 일정영역에서만 원하는 터치이벤트를 발생시킬 수 있어서

제가 정확히 원하는 결과를 가져올수있게 됐습니다.

 

 

좀더 디테일한 설명과 다른예시를 알고싶으시다면 아래 Unity Scripting API를 참고해주세요!

주소: https://docs.unity3d.com/ScriptReference/EventSystems.IPointerDownHandler.html

 

Unity - Scripting API: IPointerDownHandler

You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see: You've told us there are code samples on this page which don't work. If you know ho

docs.unity3d.com

 

 

반응형