Unity,发布ios和Android的包,UGUI,异形屏适配问题。
Unity,发布ios和Android的包,UGUI,异形屏适配问题。
前言
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的相关设置

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

本文介绍了如何在Unity中针对Android手机、平板和iPhone、iPad进行UI适配,特别是针对UGUI的Canvas设置以及刘海屏优化。通过屏幕比例判断设备类型,并提供了缩进调整代码实例,寻求更优适配建议。

被折叠的 条评论
为什么被折叠?



