Unity_2D游戏屏幕适配问题

1.屏幕的宽高比Aspect Ratio = 屏幕宽度/屏幕高度

2.当摄像机orthographicSize属性值等于当前屏幕高度单位的一半时,摄像机大小正好与屏幕大小(移动端的实际屏幕大小)相等。

【注】这里的高度单位是经过像素到单位比即Pixels To Units换算的,Unity2D中这个比例的默认值是100,即100像素等于1单位。假设我们的游戏屏幕有640像素高,那么实际换算成单位高度则是6.4个单位,当我们摄像机的orthographicSize值是3.2时,摄像机大小刚好与屏幕大小相等。

摄像机实际宽度 = 摄像机orthographicSize * 2 * 屏幕宽高比

等同于

摄像机实际宽度 = 摄像机高度 * 屏幕宽高比

Unity_2D游戏屏幕适配问题_第1张图片


问题展示:

当我们在使用iPhone4(640x960)尺寸的时候,此时屏幕的单位高度是9.6,orthographicSize为4.8,摄像机大小正好与屏幕大小(移动端的实际屏幕大小)相等,并且单位宽度是6.4.

Unity_2D游戏屏幕适配问题_第2张图片


但是我们此界面展示在iPhone5(640x1136)尺寸的时候,效果却不尽人意,如图:

Unity_2D游戏屏幕适配问题_第3张图片


我们看到场景中的游戏对象将近有一半被摄像机裁剪掉了。

原因如下:

Aspect Ratio = 640/1136 = 9/16;

摄像机的高度 = 4.8 * 2 = 9.6;

摄像机的宽度 = 9.6 * 9 / 16= 5.4

5.4小于6.4,所以我们就看到了游戏对象被裁剪了一部分,如果我们要继续保持和iPhone4上的宽度,那么我们可以调整orthographicSize

摄像机高度 = 摄像机宽度/Aspect Ratio = 摄像机宽度 * 16/9=6.4*16/9=11.38;

orthographicSize = 摄像机高度/2 = 5.69;

效果图如下:

Unity_2D游戏屏幕适配问题_第4张图片



usingUnityEngine;

usingSystem.Collections;

publicclassTest : MonoBehaviour {

//基于iPhone4比例的单位高度

float  devHeight =9.6f;

//基于iPhone4比例的单位宽度

float devWidth =6.4f;  // Use this for initialization

void Start()

float  screenHeight = Screen.height;

Debug.Log("screenHeight = "+ screenHeight);//摄像机的尺寸floatorthographicSize =this.GetComponent().orthographicSize;//宽高比floataspectRatio = Screen.width *1.0f / Screen.height;//摄像机的单位宽度floatcameraWidth = orthographicSize *2* aspectRatio;

Debug.Log("cameraWidth = "+ cameraWidth);//如果设备的宽度大于摄像机的宽度的时候  调整摄像机的orthographicSizeif(cameraWidth < devWidth)

{

orthographicSize = devWidth / (2* aspectRatio);

Debug.Log("new orthographicSize = "+ orthographicSize);this.GetComponent().orthographicSize = orthographicSize;

}

}

}

你可能感兴趣的:(Unity_2D游戏屏幕适配问题)