首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Iphone X在统一环境下的肖像游戏设计

Iphone X在统一环境下的肖像游戏设计
EN

Stack Overflow用户
提问于 2018-03-24 00:20:21
回答 2查看 4.7K关注 0票数 3

我试图在一个统一的游戏,一直在玩我的新iPhone X的缺口,我知道,有新的安全边缘,我们现在必须放置UI元素,以确保他们不会被削减的缺口或家庭手势栏。

但是,当我尝试将UI元素放置在屏幕右上角附近时,iPhone X上的位置将与iPhone 7上的位置不同。

例如,如果我将一个UI元素放置在屏幕右侧边缘的左侧35个单元上。在iPhone7上,UI元素将从可用屏幕的顶部向下放置35个单元,而在iPhoneX上,UI元素将总共放置35个单元减去屏幕顶部的屏幕缺口高度(如果缺口为20个单元,则为5个单元)。

下面是我所说的一幅图片:

因此,我的问题是,如何使UI元素35从“可用”屏幕顶部?我想我目前的解决方案的问题是,如果游戏是在没有缺口的手机上运行的,那么在顶部会有一个很大的空白。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-24 03:32:48

所以我找到了一个解决方案,不是一个完美的解决方案,但仍然是一个解决方案。我首先检测设备是否为第X代iPhone,如果为真,则将UI元素的y位置设置为Screen.SecurityArea.max.y位置。

我仍然希望看到其他解决办法。

这是我的代码:

代码语言:javascript
复制
if (UnityEngine.iOS.Device.generation == UnityEngine.iOS.DeviceGeneration.iPhoneX)
        {
            theImage.transform.position = new Vector2(theImage.transform.position.x, Screen.safeArea.max.y);

        }
票数 3
EN

Stack Overflow用户

发布于 2018-10-25 04:39:32

您可以使用联合的Screen.safeArea方法来获得任何iPhone的通用安全区域。使用此方法创建一个反应性安全区域父面板,然后从安全面板的右上角创建锚定35个像素的子图像。

这将是一个比硬编码的设备更通用的解决方案,因为未来版本的iPhone X ( Xs,Xs Max,XR)和其他有缺口的安卓手机可能没有相同的大小。在景观模式下,它还将考虑到家居指示灯和侧安全区域。

这需要统一2017.2.1+。安全区域面板应该是一个全屏UI面板(Anchor 0,0到1,1;Pivot 0.5)。还建议将您的画布设置为“具有屏幕大小的缩放”和“匹配(宽度-高度)”= 0.5,以便匹配任何屏幕大小和方向。

可以将此脚本用于“安全区父面板”:

代码语言:javascript
复制
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。希望能帮上忙!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49459970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档