You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity 6.4+UI Toolkit开发安卓App:如何显示状态栏?

在Unity 6.4中让安卓App显示顶部状态栏的解决方法

一、先检查Player Settings配置

打开Edit > Project Settings > Player > Android > Resolution and Presentation,确认以下设置:

  • 取消勾选Status Bar Hidden,这是让状态栏显示的基础开关
  • 勾选Render Outside Safe Area,避免UI被状态栏或导航栏遮挡

二、添加适配安卓的脚本(针对部分版本兼容)

有些安卓版本仅靠Player Settings可能不生效,添加一个简单的C#脚本,挂载到场景中任意常驻GameObject上(比如主相机或全局管理器):

using UnityEngine;

public class AndroidStatusBarSetup : MonoBehaviour
{
    void Start()
    {
#if UNITY_ANDROID && !UNITY_EDITOR
        // 获取安卓当前Activity与Window实例
        AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        AndroidJavaObject currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
        AndroidJavaObject window = currentActivity.Call<AndroidJavaObject>("getWindow");

        // 清除全屏标记,强制显示状态栏
        window.Call("clearFlags", 0x00000040); // 对应FLAG_FULLSCREEN
        window.Call("addFlags", 0x80000000); // 对应FLAG_FORCE_NOT_FULLSCREEN

        // 可选:设置状态栏文字为深色(适配浅色状态栏背景)
        AndroidJavaClass viewClass = new AndroidJavaClass("android.view.View");
        int lightStatusBarFlag = viewClass.GetStatic<int>("SYSTEM_UI_FLAG_LIGHT_STATUS_BAR");
        AndroidJavaObject decorView = window.Call<AndroidJavaObject>("getDecorView");
        decorView.Call("setSystemUiVisibility", lightStatusBarFlag);
#endif
    }
}
  • 脚本仅在安卓真机运行时生效,编辑器中自动跳过
  • 代码直接调用安卓原生API,无需第三方插件,兼容最新安卓版本

三、UI Toolkit的布局适配

因为用的是UI Toolkit,要避免UI被状态栏遮挡:

  • 在UI Document的根容器上,设置style.marginTop: var(--safe-area-inset-top),利用系统提供的安全区域变量自动适配
  • 也可以通过代码动态获取安全区域:
    Rect safeArea = Screen.safeArea;
    // 在UI Toolkit中调整根元素的paddingTop为safeArea.y
    

额外注意事项

  • 若自定义了安卓Manifest,确保主题没有设置全屏(比如去掉android:theme="@style/UnityTheme.Fullscreen")
  • 必须用安卓真机测试,编辑器预览无法显示真实的状态栏效果

内容的提问来源于stack exchange,提问作者Mehalon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.01 16:22:28