-
[Unity] 안드로이드 빌드 IsPointerOverGameObject () 작동 안되는 문제카테고리 없음 2024. 10. 9. 23:02
일반적으로 EventSystem.Current.IsPointerOverGameObject() 는 UI아래 있는 오브젝트가 클릭 되지 않게 방지할 때 주로 사용한다
//예시 if (EventSystem.current.IsPointerOverGameObject()) return;//위에 UI가 있다면 return
그런데 모바일을 APK로 빌드하고 나서는 먹히지 않는 문제가 발생했다.
엔진상 Game뷰에서도 Simulator에서도 잘 먹히다가 이상하게 APK로 실행했을때만...
찾아보니 비슷한 문제를 겪은 사람들이 많았고 예전 답글에는 직접 IsPointerOverGameObject()를 정의하여 사용하는 글이 많았지만. Unity 공식 API 사이트에서 좀더 간단한 해결 방법을 찾을 수 있었다.
EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId)
//예시 if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began) { if (EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId)) { retrun; //터치했을 때 위에 UI가 있다면 입력방지 } }
매개변수로 Input.GetTouch(0).fingerId 만 넣어줘도 APK에서 작동이 잘 되었다.
참고로 이렇게 넣어도 에디터에서도 실행이 잘된다.
원래 마우스 클릭 자체가 매개변수로 -1이 들어간다 이런 글을 봤지만 잘 모르겠고 해결되서 좋음...
만약 위에 방법이 통하지 않고 직접 정의해서 사용해야하는 일이 생긴다면 이 포럼을 읽어볼 것
누군가가 사용자 정의 함수를 적어줬다.
https://discussions.unity.com/t/ispointerovergameobject-is-not-working-on-mobile/770201/6