프로그래밍 농장

[해결] IPointerClickHandler 인식이 안되는 문제 본문

Unity

[해결] IPointerClickHandler 인식이 안되는 문제

Tennessee201 2022. 9. 22.
728x90

프로젝트를 진행중 UI의 IPointerClickHandler가 정상적으로 인식하지 못하는 경우가 발생하였다. 

 

마우스 Hover ( OnPointerEnter ) 는 정상적으로 동작하는데 클릭에 반응을 안하는 문제가 발생하여 여러가지 경우의 수를 생각해보았다.

 

혹시 Canvas상의 우선순위를 못받아서 ? 

Canvas 보다 살짝 뒤에 있어서 입력을 못받는 문제? 

.

.


기본적으로 IPointerClickHandler 를 인식하려면 UI 에서는 collider가 있어야하며, Canvas에 기본적으로 붙어있는 Graphic Raycaster가 잘 붙어있는지도 확인하여야 한다. 

canvas - Graphic Raycaster

이러한 부분을 전부 체크하였음에도 마우스 클릭이 전혀 먹지 않았다. 게다가 아래와 같이 EventSystem에서 실시간으로 마우스 호버 및 pressed에 대한 값도 정상적으로 받아오고 있었는데 말이다.

 

 


- 해결법 

결과적으로는 입력을 받는 Raycast Target의 체크가 해당하는 오브젝트에만 켜져있어야하는데 부모로 감싸고있는 오브젝트도 켜져있어서 접근이 불가한 상황이었다.

 

-> 애초에 값을 참조할 오브젝트에 스크립트를 붙히고, 같은 컴포넌트에서만 위와 같이 Raycast Target을 켜주면 가장 깔끔한 구현방식이 될것이다.  

 

+ 오브젝트는 하단에 있을수록 우선으로 인식하므로 하단에 있는 오브젝트중 Raycast Target을 받을 필요없는 오브젝트들은 정리를 해주는 작업이 필요하다. 

728x90