태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.


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


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


그러나, 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, 무단 복제 게시 금지. 링크 허용.


'게임 개발 > Unity' 카테고리의 다른 글

유니티5 에서 안드로이드의 상태바 보이게 하기  (5) 2016.03.21
Posted by 날개

댓글을 달아 주세요

  1. heoks 2017.04.06 20:10 신고 Address Modify/Delete Reply

    안녕하세요?
    좋은 참고가 되었습니다. 감사합니다.

    글의 마지막 부분에서 상태바의 높이를 얻어와서 다시 배치하셨다고 하셨는데요.

    상태바의 높이를 어떻게 얻어올 수 있는지 궁금합니다.

    • 날개 2017.04.07 00:50 신고 Address Modify/Delete

      제 경우에는 안드로이드 자바 클래스에서 유니티 플레이어의 액티비티를 얻어와서 상태바 높이를 얻어왔습니다.

      즉, 안드로이드의 API call 을 통해 상태바 높이를 가져 왔습니다. 유니티에는 상태바 높이를 알려주는 메소드가 없더군요.

  2. heoks 2017.04.07 09:54 신고 Address Modify/Delete Reply

    빠른 답변 감사합니다. ^^
    편안한 하루 되세요.

  3. unity nuw.b 2018.01.29 23:04 신고 Address Modify/Delete Reply

    상태바를 안드로이드 스튜디오를 통해 높이를 받아오려고 합니다만...

    검색해서 나오는 자료들을 잘모르는 것이라 복붙으론 해결하기 힘들어서.. 도움을 청합니다.

    혹시 높이를 어떻게 구하셨는지 코드 알려주실 수 있을까요?

    • 날개 2018.01.29 23:31 신고 Address Modify/Delete

      안드로이드 스튜디오에서 높이 구하는 자바 코드는,

      int height = 0;
      int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
      if (resourceId > 0) {
      height = getResources().getDimensionPixelSize(resourceId);
      }

      위에서 height 가 높이입니다.

티스토리 툴바