1

我有一个由 C# 编写的 Unity3D 开发的 android 应用程序,我想在运行我的应用程序时隐藏底栏。所以我四处搜索,发现我需要使用 Java 中的 setSystemUiVisibility 函数。这是我找到的代码:

    using UnityEngine;

public class DisableSystemUI
{
static AndroidJavaObject activityInstance;
static AndroidJavaObject windowInstance;
static AndroidJavaObject viewInstance;

public delegate void RunPtr();

public static void Run()
{
    if (viewInstance != null) {
       viewInstance.Call("setSystemUiVisibility", 2);
    }
}

static DisableSystemUI()
{
    if (Application.platform != RuntimePlatform.Android)
       return;
    DisableNavUI();
}

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);
    }
}
}

我试图调用 DisableSystemUI.Run(); 在我的主要场景中。我植根了我的设备,但应用程序在我运行后退出。不知道有什么问题?感谢帮助。

4

1 回答 1

1

如果您发布java代码会更好地理解我也有同样的问题

尝试这个

viewInstance.Call("setSystemUiVisibility", "SYSTEM_UI_FLAG_FULLSCREEN");

或这个

viewInstance.Call("setSystemUiVisibility", "SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN");

应该管用....

于 2013-06-26T06:12:28.200 回答