参考:
1.https://blog.csdn.net/yangxuan0261/article/details/79403244
上面文章的方法 NGUI界面元素 处理不好会超出屏幕之外
2.网上有关于 更改NGUITools 的GetSides 方法 (实践证明 这个方法可能永远不调用)
3. 以下是个人使用方法
a 平时实验中,更改Camara 的 Viewport Rect 可以实现割屏效果
b 于是在源码中找到相关控制变量 Camara.cs 的 rect 变量
c 判断刘海屏 并更改 对应的rect
d 在UICamara.cs 的入口处调用 (Awake 或者 OnEnable)
e 以下是相关代码
public static bool isLiuHaiScreen()
{
float fWidth = (float)Screen.currentResolution.width;
float fHeight = (float)Screen.currentResolution.height;
if (fWidth < fHeight)
{
fWidth = fHeight;
fHeight = (float)Screen.currentResolution.width;
}
float resolu = fWidth / fHeight;
if (resolu >= 1.98f) // 18:9 (16:9 1.77)
{
return true;
}
return false;
}
public static void fitLiuHaiScreen()
{
#if UNITY_IPHONE
if (isLiuHaiScreen())
{
UICamera uicamara = GameObject.FindObjectOfType<UICamera>();
if (uicamara != null)
{
Camera ca = uicamara.GetComponent<Camera>();
ca.rect = new Rect(0.038f, 0.0f, 0.962f, 1.0f); // 0.035 0.0342
//ca.rect = new Rect(0.01f, 0.0f, 0.98f, 1.0f);
}
}
#endif
}