Unity中关于IphoneX的屏幕适配

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

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

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

一、分辨率统计

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

      http://km.oa.com/files/post_photo/690/228690/d9a9657fe68316af2d282cfc22f52a981421287563.gif

图1 android分辨率分布

 

http://avocado.oa.com/fconv/files/201501/bd6b81d9e6bcb8caa9e367827aed5d59.files/image002.gif

 图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社区文档。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值