유니티 OnBecameInvisible 이벤트 발생하지 않는 문제 조치법

개요

유니티에서 OnBecameInvisible 이벤트를 이용해서 게임 오브젝트가 화면에서 보이지 않게 되었을 때의 동작을 지정할 수 있습니다. 그런데 이벤트가 발생하지 않아 혼동을 주는 경우가 있습니다. 이 사례를 알아보고 해결방법도 같이 알아보도록 하겠습니다.

호출되지 않는 경우

OnBecameInvisible 이벤트는 게임 오브젝트가 화면에 보여지지 않으면 발생하게 됩니다. 그런데 작업 도중 플레이해 보면 화면상에서 사라졌는데 호출되지 않는 경우가 있습니다.

처음에 필자는 에뮬레이터에서 보여지는 것과 Scene 에서 보여지는 것이 다르다는 것을 생각하지 못했습니다. 에뮬레이터 기준으로는 화면에서 사라졌는데 Scene 상에서는 사라지지 않은 것으로 판단되어 호출되지 않았습니다.

해결방법

이럴 때 Scene 탭을 닫거나 Scene 의 화면 확대/축소 비율을 확인해서 조정하면 됩니다.

Scene 탭
Scene 탭

Scene 탭을 닫으면 이벤트가 정상적으로 호출됩니다. 정확하게 화면에서 사라지는 기준을 어떻게 판단하는지는 알 수 없었습니다. 하지만 OnBecameInvisible는 정상적으로 호출되었습니다. 그러나 Scene 탭을 닫으면 동작하는 모습을 확인할 수 없어서 불편합니다. Scene에 UI 항목이 추가되어 있고 Scene이 아주 작게 축소되어 버튼, 텍스트등이 보이게 되면 OnBecameInvisible 이벤트가 발생하려면 아주 오랜시간 기다려야 합니다.

아래 이미지를 보면 아래쪽 부분이 실제 화면상에 보이는 크기입니다. 강조한 부분이 게임 오브젝트입니다. 화면 밖으로 나가더라도 카메라가 아주 먼 곳에 위치한 것 처럼되어 Scene 창에서 보이지 않게되어야 이벤트가 발생합니다.

실제 Scene 크기와 UI 비율 차이
실제 Scene 크기와 UI 비율 차이

그래서 아래의 이미지 처럼 실제 게임 오브젝트가 보이는 비율로 확대하면 정상적으로 OnBecameInvisible 이벤트가 호출되도록 할 수 있습니다.

Scene 영역 확대
Scene 영역 확대

이번글에서는 OnBecameInvisible 이벤트가 발생하지 않는 현상과 해결방법에 대하여 알아보았습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Time limit is exhausted. Please reload the CAPTCHA.