Unity中使用Screen.safeArea适配全面屏/异形屏

屏幕高度(即屏幕最高点):Screen.height,安全区域最高点:Screen.safeArea.yMax,屏幕顶部异形区域大小:Screen.height - Screen.safeArea.yMax

(安全区域最低点:Screen.safeArea.yMin,可用于屏幕底部适配(苹果Touch Bar))

        //计算屏幕顶部异形大小
        int safeAreaOffset = (int)(Screen.height - Screen.safeArea.yMax);
        //UI偏移
        RectTransform rectTransform = transform.Find("SafeArea").GetComponent<RectTransform>();
        rectTransform.offsetMax = new Vector2(0,-safeAreaOffset);

TestPanel:UI界面根节点,添加背景图片,可忽略异形屏的影响将图片填充满屏幕

SafeArea:安全区域根节点,在UI被加载后执行以上代码,可以根据异形屏大小动态设置顶部偏移量,避免被异形屏遮挡

     

 未广泛测试机型,有待验证! 还可以根据设备类型(SystemInfo.deviceModel)、设备名称(SystemInfo.deviceName),手动设置每个机型的偏移量