注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

重新出发的阿赵

阿赵的博客

 
 
 

日志

 
 

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

2017-12-31 16:38:57|  分类: Unity教程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
最近游戏快上线了,在做各种收尾工作的时候,发现了一个奇葩的情况。有些手机的分辨率是18:9的,在运行游戏的时候,屏幕的两边总会出现黑边,画面不能全屏。一开始我以为是自己项目的设置有问题,于是建了个空项目测试,发现空项目单纯只是打了一个场景摄像机,在这些手机上面也会出现画面到不了全屏,留有两边黑边。
于是一番百度和问朋友过程,终于找到了解决的办法。造成黑边的原因是安卓本身的一个默认设置,android.max_aspect。默认的android.max_aspect值是1.86,差不多就是16:9,所以如果手机的分辨率是18:9时,就会留有两边的黑边了。于是我们可以在AndroidManifest.xml 的 application 标签里面加多一个设置<meta-data androidname="android.max_aspect" androidvalue="2.1" />就可以把黑边给消除了。
原以为事情就告一段落了,但后来发现,由于强硬的把屏幕支持的横宽比拉长了,导致了原有的设置的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的超长比例分辨率手机,游戏的显示都正常了。
  评论这张
 
阅读(176)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018