统一到ios缺口和安全问题

时间:2018-07-10 02:45:05

标签: ios unity3d

我尝试统一创建一个游戏,并在任何苹果设备上的ios上进行构建,除了在iPhone X上没有问题。屏幕截图如下。enter image description here。它被iphone x缺口覆盖,然后当字符在左侧或右侧时被切成一半,是否有其他解决方案或插件可以用来解决问题?是否有统一的settins或xcode设置?谢谢你

2 个答案:

答案 0 :(得分:2)

关于iPhone X槽口,您可以使用this

Screen.safeArea

这是确定屏幕实际“安全区域”的便捷方法。在this thread中详细了解它。

关于将角色切成两半,这可能是您需要根据游戏逻辑手动进行处理的事情。通过获取Screen.width-您应该能够调整Camera(缩小)或限制角色移动,使其不会超出屏幕边缘。

答案 1 :(得分:1)

对于iPhone X和其他带缺口的手机,您可以使用Unity 2017.2.1+提供的通用Screen.safeArea。将下面的脚本附加到全屏UI面板(锚定0,0到1,1;枢轴0.5,0.5),它将自动调整到屏幕安全状态。

还建议将“画布”设置为“与屏幕尺寸成比例”并且“匹配(宽度-高度)” = 0.5。

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;

        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;
    }
}

有关更深入的细分,我在https://connect.unity.com/p/updating-your-gui-for-the-iphone-x-and-other-notched-devices处写了详细的截图。希望对您有帮助!