게임 개발/Unity

유니티5 에서 안드로이드의 상태바 보이게 하기

날개 2016. 3. 21. 12:20

유니티로 작업을 한다고 해도, 상태바를 보여 주어야 할 경우가 있습니다.


제 경우 '만지작'이라는 협업 프로젝트를 진행하고 있는데, 유니티를 사용한 게임이 아닌 일반 어플리케이션이기 때문에 모바일 기기에서 상태바를 표시할 필요가 있습니다.


그러나, 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 : 상태바가 화면 위에 겹쳐서 나오게 함. 상태바 배경은 투명.


이렇게 선택할 수 있습니다. 또한 해보지는 않았지만, 소소코드를 보니, 상태바 배경의 색상도 바꿀 수 있는 것 같습니다.

원리는 간단한것 같네요. 유니티의 안드로이드 네이티브 콜 기능을 이용해서, 안드로이드 SDK API를 직접 호출해서 조정하는것 같습니다.

Visible과 VisibleOverContent 차이는, 상태바가 자리를 차지하느냐 마느냐의 차이인데, 저의 경우는 앞의 것을 썼다가 UGUI가 키보드가 나올때 레이아웃 형태를 바로잡기가 어려워, 손이 좀 더 가지만 VisibleOverContent로 영역은 위에 덮어쓰게 하고, 상태바의 높이를 얻어와서 실제 컨텐츠들이 상태바 밑에 배치되도록 하였습니다.


참고로, 이 방법에 대한 원본글의 위치는, http://tsubakit1.hateblo.jp/entry/2016/01/23/041430 입니다. (일본어이지만, 구글 크롬의 번역기능 사용하면, 알아볼 정도로는 번역이 됩니다.)






(C) 2016 WingsNote.com, 무단 복제 게시 금지. 링크 허용.