Unity中关于IphoneX的屏幕适配

关于屏幕适配也在网上找了很多的解决方案,我也总结一下,保证自己能在以后翻出来可以不看代码就能想起完整流程。

屏幕适配,就是为了不同的机型不同的屏幕尺寸做对应的处理,接下来开始正式的流程介绍:

1.先定义一个普遍使用的分辨率,根据网上给出的统计结论,可以看到1280*720是比较通用的,以此为屏幕摄像机矩形。

一、分辨率统计

根据最新数据,目前android和ios的分辨率分布如下图1和图2所示:

      Unity中关于IphoneX的屏幕适配_第1张图片

图1 android分辨率分布

 

Unity中关于IphoneX的屏幕适配_第2张图片

 图2 ios分辨率分布

2.获取设备版本如果是版本为iPhone10,3或者iPhone10,6则可以判定是X,苹果官方给出的安全区概念就是让开发者可以在“安全区”内设置响应区,以避免翻转屏幕导致的响应区被刘海遮挡,这需要程序去手动修改摄像机的矩形参数

 一般手机直接用1280*720,苹果要割出刘海区,new Rect(100, 0, Screen.width - 200, Screen.height)

3.NGUI已提供了适配的两把武器:UIRoot(实现等比拉升),UIAnchor &&UIWidget(实现锚点)。

做一下类比来提升一下理解:

人的眼睛就是摄像机,眼镜大小就是屏幕边界,眼镜形状不同,屏幕也就是不能统一适配的。

选一个大小合适的镜框,保证眼镜视角最大,就是基准分辨率(1280*720),

由于眼镜距离不能随意改变所以用度数来类比等比缩放等参数设置,手机屏幕想完美显示元素,需要合适的比例和布局就像眼镜需要合适的度数。布局比例不合理,就像眼镜度数不对一样,想看清是不可能的,UIAnchor和UIWidget等组件可以根据你的设置来将组件和屏幕边缘进行调整。

Unity适配总结和技巧

(1)合理选取基准分辨率,使得UI有损单元的损失最小。

(2)可以根据不同的宽高比动态调整UIRoot的基准高,确保UI无损单元的完整显示和减少有损单元损失。

(3)UIAnchor可以使用在非UIWidget的组件上,比较独立且比较方便,但是只能选择固定的Side进行偏移,灵活性不太好。UIWidget上的anchor不能独立使用,但是可以选择任意的Side进行偏移,灵活性较好。

(4)有损UI单元(例如背景图)上,尽量不要放置位置信息,因为位置信息通常属于无损信息,拉伸后不利于展示和其他UI适配。


部分内容转自Gad社区文档。




你可能感兴趣的:(Unity中关于IphoneX的屏幕适配)