TestBird 移动互联测试专家

【开发达人】如何做好多种分辨率的UI适配?

【开发达人】如何做好多种分辨率的UI适配?

在游戏开发过程中多种分辨率的UI适配一直都是一个麻烦点,开发当中都是在美术和程序里面的工作量寻求一个平衡点。做UI适配有以锚点定位为主和做UI配文件配置等方案。

锚点定位

目前主流的还是以锚点定位为主。锚点定位的方式对于开发来讲比较方便,设计人员定好每个UI要挂在哪个锚点上,就不会去管不同分辨率的显示问题了。每个不同的分辨率都会根据获取的锚点进行UI的显示。不过锚点是有局限性的,设计上需要针对每种分辨率进行显示避规,需要不断的调整锚点的位置,达到不同分辨率都能显示正常,如果没有调整好锚点,那么在不同的分辨率屏幕上就会出现UI异常的情况。锚点定位基本不能做占满横条或竖条的设计,横条和竖条使用锚点就会出现图片显示不全或者屏幕没占满的情况。

UI配置文件

做UI配置文件适配就是针对每个比例的分辨率记录每个UI的大小和位置,然后在游戏运行时读取相应分辨率的UI配置文件来还原适配好的UI。这个做法就不需要像锚点定位那样去规避不同分辨率的设计,但是这个方案修改操作比较麻烦,每次调整都需要对每个分辨率的配置进行调整,人工操作的成本比较高。

以上两种都是比例适配较多,高清(例如NEW IPAD)适配可能就比较麻烦了。如果确实有这样不能拉伸的需求(需要UI非常精致那种),只能做多套UI了,然后用NGUI的retina适配插件做相应适配。不过一般游戏都不需要做到那么精致,直接用960或1024的UI拉伸到2048的程度,虽然有一些毛边,但是还是能够接受的,市面上的NEW IPAD大部分UI都是这样做的。

修改显示分辨率

需要注意的是,如果你不希望UI被拉伸,又不想在高清分辨率手机上显示图标过小,可以考虑下修改手机的显示分辨率。在U3D的Screen类下,有个Screen.SetResolution()函数,可以设置相应的渲染分辨率。IOS导出XCODE之前的buildsetting的other settings下的targetdevice设置也可以修改IOS相应的分辨率。

修改显示分辨率可以达到你的UI适配效果,假设你觉得这个游戏在高清分辨率的手机跑起来慢的话,修改显示分辨率后,相应的像素渲染便少了很多。从而大大提高游戏的运行帧率。但事实上它还是拉伸了UI,因为分辨率低了,显示屏会出现精度的视网格,所以场景中的3D模型边缘显示锯齿很明显。可以通过在quality setting下的效果开抗锯齿选项来解决问题,但开抗锯齿是挺耗性能的。

在做游戏开发之前就需要确定好UI适配的方案,使用一个适合自己游戏的最优方案来进行设计,既可以达到适配的效果又能优化游戏的性能。

TestBird