Unity_2D游戏屏幕适配问题

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;

效果图如下:

这里写图片描述

参考代码(代码挂载到摄像机上):

using UnityEngine;
using System.Collections;

public class Test : 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);
        //摄像机的尺寸
         float orthographicSize = this.GetComponent<Camera>().orthographicSize;
         //宽高比
         float aspectRatio = Screen.width * 1.0f / Screen.height;
         //摄像机的单位宽度
         float cameraWidth = orthographicSize * 2 * aspectRatio;

         Debug.Log("cameraWidth = " + cameraWidth);
        //如果设备的宽度大于摄像机的宽度的时候  调整摄像机的orthographicSize
        if (cameraWidth < devWidth)
        {
            orthographicSize = devWidth / (2 * aspectRatio);
            Debug.Log("new orthographicSize = " + orthographicSize);
            this.GetComponent<Camera>().orthographicSize = orthographicSize;
        }

     }
}

转载自:https://blog.csdn.net/yy763496668/article/details/77824413

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值