通过代码设置视口的自适应(正交摄像机)

Camera 属性设置为是正交摄像机 在不同的手机的分辨率下 都会由于分辨率的不同导致视口的差异,如图:
是在1920X1080的分辨率下的视口
通过代码设置视口的自适应(正交摄像机)
在小米的1440X720下的视口通过代码设置视口的自适应(正交摄像机)
明显能看出来小米的1440X720的视口更宽广一些 在一些3D游戏 可能会分多个摄像机去照不同的视角的战斗场面 例如说捕鱼 假设说有三层 第一层是UI 也就是你的炮台子弹 人物信息的UI层 而为了体现出鱼是在3D环境下 那么鱼就有可能是一个3D层 最后还有一个背景层 这三层组成 不同的玩家使用的手机的分辨率不同会导致视口大小不一 就有可能造成在这个玩家的视野这条鱼是看的到打得到的 而在别人的手机看不到你打的这条鱼 导致游戏体验性差 那么为了保证视口的同一 我们可以根据一个公式去计算 公式是:
通过代码设置视口的自适应(正交摄像机)
实际上是宽/高 不说了上代码:
public class CameraAbadtation: MonoBehaviour
{
public float InitialWidth = 1920;//初始宽
public float InitialHigh = 1080;//初始高
public float InitialViewport = 5;//初始视口
// Use this for initialization
void Start ()
{
//套公式 实际视口 = 初始视口 * 初始宽高/实际宽高
transform.GetComponent().orthographicSize = InitialViewport * (InitialWidth / InitialHigh) / ((float)Screen.width / (float)Screen.height);
}
}

接下来再看效果通过代码设置视口的自适应(正交摄像机)
通过代码设置视口的自适应(正交摄像机)
从宽度上来看是没有问题了 从高度上还是有点偏差 未能在手机上测试 不过结果相对而言还是能够接受的 这里有点要注意 当我们去获取手机的宽和高的时候一定要转成Float类型不然你的到的宽高比是一个整数类型 这种方式只能用于正交摄像机