Unity发布ios和Android包,UGUI,异形屏适配

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

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

  • 前言
  • 一、区分Android手机,Android平板,Iphone,Ipad
  • 二、UGUI的适配
    • 1.Canvas设置
    • 2.相应的ui缩进,来适应异形屏
  • 总结
  • 版权声明


前言

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


一、区分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,异形屏适配_第1张图片

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向右缩进的话,把负值变为正值即可。


总结

如果有更好的解决方案的大佬,还请多多指点。

就先讲到这里吧,好记性不如烂笔头,如果有问题可以随时联系我。
欢迎大佬多多来给萌新指正,欢迎大家来共同探讨。
如果各位看官觉得文章有点点帮助,跪求各位给点个“一键三连”,谢啦~

声明一下:本博文章若非特殊注明皆为原创原文链接
https://blog.csdn.net/Wrinkle2017/article/details/117281879
————————————————————————————————

版权声明

版权声明:本博客为非营利性个人原创
所刊登的所有作品的著作权均为本人所拥有
本人保留所有法定权利,违者必究!
对于需要复制、转载、链接和传播博客文章或内容的
请及时和本博主进行联系
对于经本博主明确授权和许可使用文章及内容的
使用时请注明文章或内容出处并注明网址
转载请附上原文出处链接及本声明

你可能感兴趣的:(Unity3d,unity手游开发,UGUI,unity,移动开发,手机游戏,游戏开发,ugui)