做手机屏幕适配的同学可能会发现,每次unity导出的游戏都是固定高度,宽度随手机屏幕比例相应变化。如何固定宽度,让高度随屏幕比例变化呢?
比如,如下游戏,五个方块横过来要求刚好定在屏幕左右两端,这就要求相机宽度固定(相机宽度始终为五个方块的总宽度)。
在说明解决方案之前,我要说明为何unity默认为固定高度,随屏幕比例变化宽度。这是因为Camera组件的size属性就是半个屏幕高度。如下图:
ViewPort size指的就是半个屏幕的高度,如下图所示:
如果这个size的初始值不变,游戏当然就高度固定啦!
为了让宽度固定,假如我们需要的是固定宽度YOUR_WIDTH,那么相应的高度(size)是多少呢?在unity中,我们可以通过Screen.width和Screen.length来获取手机屏幕的高度与宽度。显然摄像机的长宽比等于手机屏幕的长宽比,于是YOUR_WIDTH/size * 2 = Screen.width/Screen.length;
现在我们知道这个高度(size)应该是多少了:
Camera.main.orthagraphicSize = YOUR_WIDTH/2/(Screen.width/(float)Screen.length);如此在unity中游戏开始时执行以上代码即可:
public float YOUR_WIDTH;void Start(){Camera.main.orthagraphicSize = YOUR_WIDTH/2/(Screen.width/(float)Screen.length);
}
好了这个问题,我们解决啦!
现在自然而然会想到另一个问题,如果在3D游戏中,相机为perspective,应该怎么办呢?这个问题有点儿复杂,我们在以后的文章中在讲吧!!!