유니티에서 소프트 키 숨기기
안드로이드에서 소프트키를 보여주지 않아야 할 경우가 있을 때 아래 코드로 파일을 하나 생성 해 줍니다.
using UnityEngine;
public class DisableSystemUI {
#if UNITY_ANDROID
static AndroidJavaObject activityInstance;
static AndroidJavaObject windowInstance;
static AndroidJavaObject viewInstance;
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;
#if UNITY_ANDROID
using (AndroidJavaClass unityPlayerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) {
activityInstance = unityPlayerClass.GetStatic("currentActivity");
windowInstance = activityInstance.Call("getWindow");
viewInstance = windowInstance.Call("getDecorView");
AndroidJavaRunnable RunThis;
RunThis = new AndroidJavaRunnable(new RunPtr(Run));
activityInstance.Call("runOnUiThread", RunThis);
}
#endif
}
}
그리고 처음 호출하는 부분에서 DisableSystemUI.DisableNavUI(); 를 불러주면 소프트키를 숨겨줍니다.
해당 폰에서 소프트키를 다시 볼려면 화면 상단을 아래로 스와이프를 해 주면 됩니다.