Unity,发布ios和Android的包,UGUI,异形屏适配问题。
  v5bEezpf7PPs 2023年11月02日 81 0

Unity,发布ios和Android的包,UGUI,异形屏适配问题。

@TOC

<hr style=" border:solid; width:100px; height:1px;" color=#000000 size=1">

前言

unity发布移动端需要做ui的适配,我们用的是UGUI,暂且提供一种我们自己的ui适配解决方案,包含异形屏的。

<hr style=" border:solid; width:100px; height:1px;" color=#000000 size=1">

一、区分Android手机,Android平板,Iphone,Ipad

也查到了各种各样的区分方法。 我们是通过长宽比来区分的,下面直接上代码。

#if UNITY_ANDROID

        //通过屏幕比例判断是否刘海屏
        if ((float)Screen.width / Screen.height > 2)
        {
            isHaveLiuhai = true;
        }
        if ((float)Screen.width / Screen.height < 1.7f)
        {
        //是安卓平板
            isIphone = false;
        }
        else
        {
        //是安卓手机
            isIphone = true;

        }
#endif
#if UNITY_IOS
        
        //通过屏幕比例判断是否刘海屏
        if ((float)Screen.width / Screen.height > 2)
        {
            isHaveLiuhai = true;
        }
        if ((float)Screen.width / Screen.height < 1.5f)
        {
        //是Ipad
            isIphone = false;
        }
        else
        {
        //是Iphone
            isIphone = true;

        }
#endif

二、UGUI的适配

1.Canvas设置

这是canvas的相关设置

Unity,发布ios和Android的包,UGUI,异形屏适配问题。_#endif

2.相应的ui缩进,来适应异形屏

设置ui缩进的代码如下(示例):

//设置节点的位置
    public void SetAdapta(Transform target, float x)
    {
#if UNITY_IPHONE
        if (isHaveLiuhai)
        {
            RectTransform rect = target.GetComponent<RectTransform>();
            Vector2 anPos = rect.anchoredPosition;
            anPos.x += x;
            rect.anchoredPosition = anPos;
        }
#endif
#if UNITY_ANDROID
        if (isHaveLiuhai)
        {
            RectTransform rect = target.GetComponent<RectTransform>();
            Vector2 anPos = rect.anchoredPosition;
            anPos.x += x;
            rect.anchoredPosition = anPos;
        }
#endif
    }

这是调用的代码

IPhoneAdapta.Instance.SetAdapta(scanButton.transform, -144);

表示右侧的ui向左缩进144,左侧ui向右缩进的话,把负值变为正值即可。


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

v5bEezpf7PPs