[Unity] Windows 네이티브 메세지 박스 띄우기
Windows 환경에서 게임을 배포하는 경우 팝업 창 리소스가 로딩 되기 전에 알림을 띄워야 되는 상황이 있다. 예를 들어 초기화 과정에서 에러가 발생하는 경우 유저에게 이를 알려야 하지만 메세지 리소스가 로딩되지 않았기 때문에 알리기가 쉽지 않다. 이를 위해 별도의 리소스를 만들어 사용할 수도 있지만 관리 비용도 커지고, 일도 많아진다. 이럴 때 간단히 Windows 네이티브 메세지 박스를 이용하여 메세지를 보여주면 쉽게 해결된다.
이미 Roy de Jong이라는 개발자가 유니티에서 간단히 사용할 수 있는 클래스를 만들어 놓았다. user32.dll 런타임 라이브러리를 import하여 MessageBox() API를 호출하고, 이를 통해 Windows 메세지 창을 띄운다. 그리고 GetActiveWindow() API로 현재 호출한 Thread(유니티 Main Thread)의 핸들을 가져와 MessageBox의 핸들로 등록하여 Owner를 유니티 핸들로 지정하였다. MessageBox() API는 Modal 메세지 창을 띄우기 때문에 메세지 창을 닫기 전까지 다른 창을 클릭 할 수 없다. 당연하게도 Windows API이므로 다른 플랫폼에서는 사용할 수 없다.
아래와 같이 호출하여 간단히 사용할 수 있다.
NativeWinAlert.Error("This is a warning message.", "Warning");