美文网首页
Unity_2D游戏屏幕适配问题

Unity_2D游戏屏幕适配问题

作者: 壹米玖坤 | 来源:发表于2017-11-03 16:05 被阅读0次

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

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

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

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

    等同于

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


    问题展示:

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


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


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

    原因如下:

    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;

    效果图如下:


    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游戏屏幕适配问题

          本文链接:https://www.haomeiwen.com/subject/fjbtmxtx.html