using UnityEngine; using UnityEditor; using System.Collections.Generic; using System.Runtime.InteropServices; using System; public class NotchScreenUtil { private AndroidJavaObject jo; private AndroidJavaObject context; private static NotchScreenUtil _instance; public static NotchScreenUtil Instance { get { if (_instance == null) { _instance = new NotchScreenUtil(); } return _instance; } } #if UNITY_IOS //初始化 [DllImport("__Internal")] private static extern string m_GetNotchHeight(); #endif private NotchScreenUtil() { #if UNITY_IOS #elif UNITY_ANDROID using (var up = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) { context = up.GetStatic("currentActivity"); using (var adi = new AndroidJavaClass("com.bluewhale.androidutils.NotchScreenUtil")) { jo = adi.CallStatic("instance"); jo.Call("Init", context); } } #endif } public void Init() { Debug.Log("设备信息初始化"); } // 获取刘海屏高度 public int GetNotchHeight() { int height = 0; try { #if UNITY_IOS height = Mathf.Floor(Convert.ToSingle(m_GetNotchHeight())); #elif UNITY_ANDROID height = jo.CallStatic("getNotchHeight"); #endif } catch (Exception e) { Debug.LogError(e); } return height; } }