Unity3D의 신묘한 기능중에 하나는 안드로이드 SDK를 C#으로 불러서 쓸수 있다는 점.
그걸 이용해서 Soft Navigation bar를 없애보았다.
* 게임할때 겁나 걸리적 거리는 요녀석!

* 원문은 여기
아래 "2"가 왜 "2"인지에 대한 자료는 여기
일단 이렇게 선언이 끝났으면 다음의 코드를 추가한다.
이제 이녀석을 호출할 녀석을 추가한다.
이제 상단 실행시켜보면 상단 또는 하단 엣지 부분을 가운데 방향으로 드레그 하기전에는 메뉴가 보이지 않는다.
물론 단점도 존재한다.
- 화면해상도 새로 잡아야 한다. T_T
- 지금까지 알려진 해상도가 아니라는 점...
그걸 이용해서 Soft Navigation bar를 없애보았다.
* 게임할때 겁나 걸리적 거리는 요녀석!

* 원문은 여기
아래 "2"가 왜 "2"인지에 대한 자료는 여기
#if UNITY_ANDROID // 안드로이드 자바오브젝트를 3개 선언한다. static AndroidJavaObject activityInstance; static AndroidJavaObject windowInstance; static AndroidJavaObject viewInstance; //중요한건 바로 여기 "2"로 설정된 "SYSTEM_UI_FLAG_HIDE_NAVIGATION"값이 중요 const int SYSTEM_UI_FLAG_HIDE_NAVIGATION = 2; const int SYSTEM_UI_FLAG_LAYOUT_STABLE = 256; const int SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION = 512; const int SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN = 1024; const int SYSTEM_UI_FLAG_IMMERSIVE = 2048; const int SYSTEM_UI_FLAG_IMMERSIVE_STICKY = 4096; const int SYSTEM_UI_FLAG_FULLSCREEN = 4; public delegate void RunPtr(); public static void Run() { if (viewInstance != null) { viewInstance.Call("setSystemUiVisibility", SYSTEM_UI_FLAG_LAYOUT_STABLE | SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | SYSTEM_UI_FLAG_HIDE_NAVIGATION | SYSTEM_UI_FLAG_FULLSCREEN | SYSTEM_UI_FLAG_IMMERSIVE_STICKY); } } #endif
일단 이렇게 선언이 끝났으면 다음의 코드를 추가한다.
public static void DisableNavUI() { if (Application.platform != RuntimePlatform.Android) return; using (AndroidJavaClass unityPlayerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) { activityInstance = unityPlayerClass.GetStatic<AndroidJavaObject>("currentActivity"); windowInstance = activityInstance.Call<AndroidJavaObject>("getWindow"); viewInstance = windowInstance.Call<AndroidJavaObject>("getDecorView"); AndroidJavaRunnable RunThis; RunThis = new AndroidJavaRunnable(new RunPtr(Run)); activityInstance.Call("runOnUiThread", RunThis); } }
이제 이녀석을 호출할 녀석을 추가한다.
void Start() { DisableNavUI(); }
이제 상단 실행시켜보면 상단 또는 하단 엣지 부분을 가운데 방향으로 드레그 하기전에는 메뉴가 보이지 않는다.
물론 단점도 존재한다.
- 화면해상도 새로 잡아야 한다. T_T
- 지금까지 알려진 해상도가 아니라는 점...