今天开始做Unity屏幕的适配,项目开始进入了中后期,更加需要将一些细节的地方打磨的更好。
如何使屏幕适应不同分辨率的安卓手机,这是一个必须解决的问题,也是一个考验程序和设计的地方。
屏幕适配我一般采用固定一个方向上(长,宽)的相对大小不变,然后调节另外一个方向。
因为游戏界面多用tk2dTool 这个插件来制作,所以技术主要围绕这个插件来。主要Camera使用tk2dCamera 这个Camera本身自带了屏幕适应的初级解决方案,Tk2kCameraAnchor 这个脚本挂接到物体上之后,更具所选择的摄像机,物体可以相对摄像机频幕固定在,屏幕的
顶边左,顶边中,顶边右
中层左,中层中,中层右
底边左,底边中,底边右
这9个方向上,再设置针对这几个位置的偏移,基本上对于简单的UI(按钮,信息栏)来说可以足够适应屏幕。说以我称它为初级解决方案。
但是对于一些特殊的UI来说,这个功能就不够用了,例如一个几乎占据半个屏幕的圆角矩形,这个UI的位置不管怎么移动对于小分辨率的手机来说都不符合要求,这个时候就必须得对UI的大小进行缩放。
:对于需要缩放来适应屏幕的UI,就需要特殊处理,我的方法是自己写类似于Tk2kCameraAnchor 的脚本,获取到屏幕中需要显示的区域,然后缩放到合适大小。
获得屏幕区域的矩形:
Rect rect = new Rect();
rect = _currentTk2dCamera.ScreenExtents;
获得一个图片的当前大小
frameIcon.renderer.bounds.size
这里我使用的是tk2dSlicedSprite的Dimension 来控制图片的大小,因为不知道Dimension 和世界中距离的关系所以我需要先计算出原图的Dimensions和可用区域的比值,之后再用比值计算出可用区域的dimensions的值,最后再设定Dimensions的值就可以达到缩放到合适大小的要求。