private Camera cameraView;//摄像机
private float aspect;//屏幕当前分辨率
private const float a = 16 / 9f;//固定分辨率16:9
private void Start()
{
cameraView = GetComponent<Camera>();//获取摄像机
}
private void Update()
{
ChangeGameView();//更改视口长宽
}
public void ChangeGameView()
{
aspect = Screen.width / Screen.height;//屏幕当前长宽比
if (aspect > a)//当长度较长时,设置屏幕长度与屏幕的宽度适配
{
float b = Screen.height * a / Screen.width;//获取与屏幕宽度相适应的屏幕长度除以屏幕当前长度
cameraView.rect = new Rect((1 - b) / 2, 0f, b, 1f);//设置摄像机视口
}
else
{
float c = Screen.width / a / Screen.height;//获取与屏幕长度相适应的屏幕宽度除以屏幕当前宽度
cameraView.rect = new Rect(0f, (1 - c) / 2, 1f, c);//设置摄像机视口
}
}
使用Camera中视口属性模拟实现Game窗口中的分辨率自适应.
在Game窗口中Free Aspect模式拖拽会有影像残留,发布版本目前功能正常.
|