文档

Unity Engine

Unity Engine

onWindowInsetsChanged

A callback to detect changes in the window insets when the application is running.
阅读时间1 分钟最后更新于 1 个月前

Definition

public static event Action<AndroidWindowInsets> onWindowInsetsChanged

Remarks

Notes:
  • The callback is only supported on Android 11 (API 30) or later versions. On older devices, you need to detect changes in the insets manually as demonstrated in the following code example.
  • Querying insets manually using AndroidApplication.currentWindowInsets is a slow operation.

Examples

using UnityEngine;using UnityEngine.Android;public class Controller : MonoBehaviour{ private bool InsetsCallbackSupported => AndroidBuild.Version.apiLevel >= 30; private bool StatusBars; private bool NavigationBars; public void Start() { if (InsetsCallbackSupported) AndroidApplication.onWindowInsetsChanged += OnInsetsChanged; else { var insets = AndroidApplication.currentWindowInsets; StatusBars = insets.IsVisible(AndroidWindowInsets.Type.StatusBars); NavigationBars = insets.IsVisible(AndroidWindowInsets.Type.NavigationBars); } } public void Update() { if (!InsetsCallbackSupported) { var insets = AndroidApplication.currentWindowInsets; var currentStatusBars = insets.IsVisible(AndroidWindowInsets.Type.StatusBars); var currentNavigationBars = insets.IsVisible(AndroidWindowInsets.Type.NavigationBars); if (StatusBars != currentStatusBars || NavigationBars != currentNavigationBars) { OnInsetsChanged(insets); StatusBars = currentStatusBars; NavigationBars = currentNavigationBars; } } } public void OnDisable() { if (InsetsCallbackSupported) AndroidApplication.onWindowInsetsChanged -= OnInsetsChanged; } void OnInsetsChanged(AndroidWindowInsets insets) { Debug.Log($"NavigationBars visible " + insets.IsVisible(AndroidWindowInsets.Type.NavigationBars)); Debug.Log($"StatusBars visible " + insets.IsVisible(AndroidWindowInsets.Type.StatusBars)); }}