Unity 调用Android 显示 顶部状态栏和底部导航栏

最近公司有个项目需要使用Unity制作一个手机APP

但是大家都发现了使用Unity打包出来的Andorid项目大家都知道是默认全屏,这样的话导航栏和状态栏都将不显示。这样看起来怎么像是一个APP呢!

显示底部虚拟导航栏很简单(虽然我找了一天的百度 o(╥﹏╥)o)

Screen.fullScreen = false;

对没错就是这个,就是这么简单,我找了一天后来被一个人提醒了一下尝试了可以在华为畅享7上已经测试过没有问题!

 

显示顶部导航栏就有一些麻烦了。代码如下


    /// <summary>
    ///  隐藏上方状态栏
    /// </summary>
    public static void Hide()
    {
#if !UNITY_EDITOR && UNITY_ANDROID
        setStatusBarValue(1024); // WindowManager.LayoutParams.FLAG_FULLSCREEN; change this to 0 if unsatisfied
#endif
    }

    /// <summary>
    ///  显示上方状态栏
    /// </summary>
    public static void Show()
    {
#if !UNITY_EDITOR && UNITY_ANDROID
        setStatusBarValue(2048); // WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN
#endif
    }

    private static void setStatusBarValue(int value)
    {
        newStatusBarValue = value;
        using (var unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
        {
            using (var activity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity"))
            {
                activity.Call("runOnUiThread", new AndroidJavaRunnable(setStatusBarValueInThread));
            }
        }
    }

    private static void setStatusBarValueInThread()
    {
        using (var unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
        {
            using (var activity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity"))
            {
                using (var window = activity.Call<AndroidJavaObject>("getWindow"))
                {
                    window.Call("setFlags", newStatusBarValue, newStatusBarValue);
                }
            }
        }
    }

 在合适的位置调用show函数就可以了,效果图如下。

关于顶部状态栏可以参阅该文章: Unity3D调用Android功能与组件(九)—状态栏与通知栏

 

提醒一下大家,如果使用Unity做这个APP的话让美工提前将上方状态栏给预留出来否则的话显示上方状态栏的时候会遮挡掉你UI界面的某些功能。底部的导航栏没关系的。效果看起来是不会影响分辨率。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

惊悚的毛毛虫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值