在特别的手机分辨率情况下的适配问题
最近游戏快上线了,在做各种收尾工作的时候,发现了一个奇葩的情况。有些手机的分辨率是18:9的,在运行游戏的时候,屏幕的两边总会出现黑边,画面不能全屏。一开始我以为是自己项目的设置有问题,于是建了个空项目测试,发现空项目单纯只是打了一个场景摄像机,在这些手机上面也会出现画面到不了全屏,留有两边黑边。
于是一番百度和问朋友过程,终于找到了解决的办法。造成黑边的原因是安卓本身的一个默认设置,android.max_aspect。默认的android.max_aspect值是1.86,差不多就是16:9,所以如果手机的分辨率是18:9时,就会留有两边的黑边了。于是我们可以在AndroidManifest.xml 的 application 标签里面加多一个设置就可以把黑边给消除了。
原以为事情就告一段落了,但后来发现,由于强硬的把屏幕支持的横宽比拉长了,导致了原有的设置的UI的自适应出了问题。原因在于项目的Canvas Scaler是使用ScaleWithScreenSize的,然后ScreenMatchMode选择了MatchWidthOrHeight。在这种模式下,需要自己指定MatchWidthOrHeight的值,一般设置的0就是以屏幕宽度适配,如果设置为1,就是以屏幕高度适配。当屏幕变成18:9时,如果还是用宽度适配,其实就是把高度变小了,UI元素会全部挤在一起。所以只能做了一个代码的适配,当屏幕的长宽比比16:9大的时候,就把MatchWidthOrHeight改成1,变成屏幕高度适配。
这样,散开分布到UI元素已经能完美的适配18:9的屏幕了,但对于那些loading页的全屏图片,还是会有问题。我的项目的为了适配包含平板在内的各种分辨率设备,所以loading的全屏背景图片是做成了方形,然后以中间为基准,保持比例的上下扩展到设备的屏幕高度的。但由于18:9时是通过屏幕高度去适配图片,导致了全屏图片的上下适配对了,左右适配有问题,还是会出现黑边。最后,只能写一个脚本挂在UI的背景图片控件上,根据屏幕现有的实际分辨率来设置这些全屏图片显示时的分辨率。
到这一步,终于所有的适配都正常了,不论在16:9的正常手机,还是4:3的平板电脑,还是18:9的超长比例分辨率手机,游戏的显示都正常了。
相关文章
- 苹果手机如何互联传送Mac电脑屏幕上面?
- AirServer2022苹果安卓手机屏幕如何投影到电脑上面
- 2016三大网络安全威胁:手机超PC成头号攻击目标
- 华为回应出售手机业务传闻:假消息;微软将ChatGPT整合到更多工具中:不用写代码就能开发应用;苹果更新Mac产品线|极客头条
- 8月7日科技资讯|传海思为 PC 开发 CPU/GPU ;小米将发布第二款 5G 手机;Firefox 68.0.2 发布
- 揭秘中国刷量“点击农场”:两人操纵上万台手机暴利赚钱
- 别说自己懂手机 还玩Root的才是发烧友
- CSS3超酷移动手机滑动隐藏側边栏菜单特效
- 新辰:4G时代怎样利用手机进行移动APP营销?
- 十一来临,国内有哪些手机智能助手帮你出行?
- 2019-1-29-dotnet-使用-Qpush-快速从电脑到手机推送文字
- 手机端rem布局详解(淘宝无限适配)