zl程序教程

您现在的位置是:首页 >  移动开发

当前栏目

在特别的手机分辨率情况下的适配问题

手机 情况 适配 分辨率 特别 问题
2023-09-27 14:27:29 时间

最近游戏快上线了,在做各种收尾工作的时候,发现了一个奇葩的情况。有些手机的分辨率是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的超长比例分辨率手机,游戏的显示都正常了。