带有缺口的设备上的Unity UI损坏和更改

时间:2019-06-16 06:24:00

标签: android unity3d

带槽口的物理设备上的Unity UI似乎已被奇怪地更改,但是,在带槽口的仿真器(Pixel 3 XL)上,它可以正常工作。 我已经更新到Unity 2019.1.6,尝试进行设置并使用implemented the safe area

以下是屏幕截图,比较了更改后的UI(物理设备)和预期的UI(模拟器):

altered example

correct, intended screenshot

我的所有SDKS都是最新的,其中安装最高的是SDK 28。我尝试使用Unity随附的SDK以及通过Android Studio安装的SDK。

以下是“安全区”脚本的代码(来自上面的链接):

 using UnityEngine;

public class SafeArea : MonoBehaviour
{
    RectTransform Panel;
    Rect LastSafeArea = new Rect (0, 0, 0, 0);

    void Awake ()
    {
        Panel = GetComponent<RectTransform> ();
        Refresh ();
    }

    void Update ()
    {
        Refresh ();
    }

    void Refresh ()
    {
        Rect safeArea = GetSafeArea ();

        if (safeArea != LastSafeArea)
            ApplySafeArea (safeArea);
    }

    Rect GetSafeArea ()
    {
        return Screen.safeArea;
    }

    void ApplySafeArea (Rect r)
    {
        LastSafeArea = r;

        // Convert safe area rectangle from absolute pixels to normalised anchor coordinates
        Vector2 anchorMin = r.position;
        Vector2 anchorMax = r.position + r.size;
        anchorMin.x /= Screen.width;
        anchorMin.y /= Screen.height;
        anchorMax.x /= Screen.width;
        anchorMax.y /= Screen.height;
        Panel.anchorMin = anchorMin;
        Panel.anchorMax = anchorMax;

        Debug.LogFormat ("New safe area applied to {0}: x={1}, y={2}, w={3}, h={4} on full extents w={5}, h={6}",
            name, r.x, r.y, r.width, r.height, Screen.width, Screen.height);
    }
}

脚本已附加到全屏面板,并且所有UI元素都是该面板的子代。

这是我的Android播放器设置: enter image description here

enter image description here

Kinda感到奇怪的是,它只能在仿真器上运行,而不能在物理设备上运行(而不是物理设备是S8,而仿真器是Pixel 3 XL)。 从错误的屏幕截图来看,这似乎与缺口或Android 9 Pie有关。尽管带有缺口的设备也恰好在运行Pie。

0 个答案:

没有答案