유니티로 작업을 한다고 해도, 상태바를 보여 주어야 할 경우가 있습니다.
제 경우 '만지작'이라는 협업 프로젝트를 진행하고 있는데, 유니티를 사용한 게임이 아닌 일반 어플리케이션이기 때문에 모바일 기기에서 상태바를 표시할 필요가 있습니다.
그러나, iOS와는 달리 안드로이드의 경우, 과거에는 빌드 세팅에서 상태바를 보이게 할 것인지 아닌지에 대한 설정이 있었으나, 유니티 5에서는 해당 설정이 없어졌더군요.
구글 검색을 해보며 여러가지 방법을 시도해 봤지만, 만족할 만한 방법을 못찾다가, 어떤 일본어로 된 웹페이지에서 가장 마음에 드는 방법을 찾았습니다. (일본어는 못하지만, 구글 일본어 번역기능만 써도 무슨 말인지는 알겠군요.)
GitHub에 올라와 있는 Unity tidbits 이라는 유니티 개발에 도움이 되는 C# 코드라는 오픈소스의 일부를 사용하는 방법입니다.
먼저, 해당 오픈소스의 위치는, https://github.com/zeh/unity-tidbits 입니다.
안드로이드의 상태바를 보이거나 안보이게 하기 위해서는 ApplicationChrome 이라는 단 하나의 클래스 파일만 있으면 됩니다.
ApplicationChrome 클래스 소스코드 파일의 위치는, https://github.com/zeh/unity-tidbits/tree/master/application 입니다. 여기서 'ApplicationChrome.cs' 파일만 다운로드 하여 작업해야 하는 유니티 프로젝트 폴더에 복사하면 됩니다.
사용 방법은 간단합니다.
본인 프로젝트의 C# 스크립트에서 적당한 곳에서,
ApplicationChrome.statusBarState = ApplicationChrome.States.VisibleOverContent;
와 같이 한줄이면 상태바가 나오게 할 수 있습니다.
참고로, statusBarState 값은,
ApplicationChrome.States.Visible : 상태바가 보이게 함. (상태바 영역 차지)
ApplicationChrome.States.VisibleOverContent : 상태바가 화면 위에 겹쳐서 나오게 함. 상태바 배경은 불투명한 색상.
ApplicationChrome.States.TranslucentOverContent : 상태바가 화면 위에 겹쳐서 나오게 함. 상태바 배경은 투명.
참고로, 이 방법에 대한 원본글의 위치는, http://tsubakit1.hateblo.jp/entry/2016/01/23/041430 입니다. (일본어이지만, 구글 크롬의 번역기능 사용하면, 알아볼 정도로는 번역이 됩니다.)
(C) 2016 WingsNote.com, 무단 복제 게시 금지. 링크 허용.
'게임 개발 > Unity' 카테고리의 다른 글
유니티5 에서 안드로이드의 상태바 보이게 하기 (7) | 2016.03.21 |
---|
안녕하세요?
좋은 참고가 되었습니다. 감사합니다.
글의 마지막 부분에서 상태바의 높이를 얻어와서 다시 배치하셨다고 하셨는데요.
상태바의 높이를 어떻게 얻어올 수 있는지 궁금합니다.
답글
제 경우에는 안드로이드 자바 클래스에서 유니티 플레이어의 액티비티를 얻어와서 상태바 높이를 얻어왔습니다.
즉, 안드로이드의 API call 을 통해 상태바 높이를 가져 왔습니다. 유니티에는 상태바 높이를 알려주는 메소드가 없더군요.
빠른 답변 감사합니다. ^^
편안한 하루 되세요.
답글
상태바를 안드로이드 스튜디오를 통해 높이를 받아오려고 합니다만...
검색해서 나오는 자료들을 잘모르는 것이라 복붙으론 해결하기 힘들어서.. 도움을 청합니다.
혹시 높이를 어떻게 구하셨는지 코드 알려주실 수 있을까요?
답글
안드로이드 스튜디오에서 높이 구하는 자바 코드는,
int height = 0;
int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
if (resourceId > 0) {
height = getResources().getDimensionPixelSize(resourceId);
}
위에서 height 가 높이입니다.
좋은정보 정말 정말 감사드립니다.
써보니 와~!! 정말 좋은데
쓰다보니 큰 문제가 하나있더라고요.
유니티에서 Application.Quit로 종료할때 유니티에서
이 상단바 네이티브콜기능을 같이 제대로 종료를 못시켜서 그런지
앱종료후 같은 앱을 재시작하려면 5~8초를 기다려야 앱이 실행이 되더군요
그나마 방법이 앱을 강제종료하는 방법이라서
System.Diagnostics.Process.GetCurrentProcess().Kill()로 앱을 강제종료하려니
il2cpp에서는 위명령어가 적용이 안되고 참 난감하네요..
혹시 이문제를 해결하는 방법을 알고계신지요?
해외포럼도 다돌아보고 로그캣찍어보고 별짓다해도 해결이 안되서
실례를 무릅쓰고 글을 남겨보았습니다.
혹시나 해결방법을 알려주시면 정말정말 감사하겠습니다 ^^;
답글
제가 이글 쓸 당시에는 그런 문제를 못겪어봐서 지금으로는 모르겠네요. ^^;