从Unity3D调用Java函数

时间:2013-06-09 01:21:21

标签: c# android unity3d

我有一个由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();在我的主要场景中。我根植了我的设备,但是在我运行它之后应用程序退出了。不确定它有什么问题?谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

如果你发布java代码会更好 我也有同样的问题

试试这个

viewInstance.Call(&#34; setSystemUiVisibility&#34;,&#34; SYSTEM_UI_FLAG_FULLSCREEN&#34;);

或者

viewInstance.Call(&#34; setSystemUiVisibility&#34;,&#34; SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN&#34;);

应该有用......