Zephus 发表于 2022-8-15 10:22

Unity 设置屏幕禁止休眠的四个方式

1.Screen.sleepTimeout = SleepTimeout.NeverSleep; 并不是百分百有效

2.
    public static AndroidJavaObject Activity
    {
      get
      {
            AndroidJavaClass jcPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
            return jcPlayer.GetStatic<AndroidJavaObject>("currentActivity");
      }
    }

    const int FLAG_KEEP_SCREEN_ON = 128;
    public static void KeepScreenOn()
    {
      Debug.Log("Click KeepscreenOn");
      try
      {
            Activity.Call("runOnUiThread", new AndroidJavaRunnable(() => {
                //需要在UI线程中调用
                Activity.Call<AndroidJavaObject>("getWindow").Call("addFlags", FLAG_KEEP_SCREEN_ON);
            }));
      }
      catch (Exception e)
      {
            Debug.LogError(e.Message);
      }
    }

可以配合在AndroidManifest 中添加<uses-permission android:name="android.permission.WAKE_LOCK"/> 一起使用



3.AndroidManifest主Activity 添加Them配置 valuse下添加syles.xml文件
    <activity
            android:name="com.qk.unity.QuickUnityPlayerProxyActivity"
            android:configChanges="fontScale|orientation|keyboardHidden|locale|navigation|screenSize|uiMode"
             android:theme = "@style/MapAutoFullScreenTheme"
            android:screenOrientation="portrait"
            tools:replace="android:configChanges,android:screenOrientation,android:theme"
            android:exported="true">
      <intent-filter>
      <action android:name="android.intent.action.MAIN" />

      <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>

      <meta-data
          android:name="unityplayer.UnityActivity"
          android:value="true" />
    </activity>



styles.xml 文件
<resources>
<style name="MapAutoFullScreenTheme" >
<item name="android:windowNoTitle">true</item>
<item name="android:windowActionBar">false</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:keepScreenOn">true</item>
</style>
</resources>4.第三种方法无法解决刘海屏问题 会一直存在刘海屏 解决方法:修改style.xml 套用Unity官方布局


<resources>
<style name="MapAutoFullScreenTheme" parent="BaseUnityTheme">
    <item name="android:windowBackground">@android:color/black</item>
    <item name="android:keepScreenOn">true</item>
</style>
<style name="BaseUnityTheme" parent="android:Theme.Light.NoTitleBar.Fullscreen">
</style>
<style name="UnityThemeSelector.Translucent" parent="@style/UnityThemeSelector">
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
</style>
</resources>
以上基本解决息屏及适配问题,真的是不容易啊,还望点个赞或者打赏一下,感谢。
页: [1]
查看完整版本: Unity 设置屏幕禁止休眠的四个方式