1 using UnityEngine;
2 using System.Collections;
3
4 public class CameraModify : MonoBehaviour {
5
6 /*
7 * 屏幕适配
8 */
9
10 /// <summary>
11 /// 屏幕比例:宽度
12 /// </summary>
13 public int screenRatioX = 16;
14 /// <summary>
15 /// 屏幕比例:高度
16 /// </summary>
17 public int screenRatioY = 9;
18
19 void Start () {
20
21 //获取主摄像机
22 Camera ca = transform.GetComponent<Camera> ();
23
24 //获取屏幕的宽度
25 float xScreen = Screen.width;
26
27 //获取屏幕的高度
28 float yScreen = Screen.height;
29
30 //设置的显示比例 与 设备的显示比例 差值
31 float proportion = (screenRatioX / screenRatioY) - (xScreen / yScreen);
32
33 //当设置的比例值大于设备比例值
34 if (proportion > 0) {
35
36 //计算新的屏幕高度 屏幕的宽度 / 屏幕的宽度比例 * 屏蔽高度的比例
37 float yNow = (xScreen / screenRatioX) * screenRatioY;
38
39 //计算屏幕的高度变化比例 新的屏幕高度 / 初始的屏幕高度
40 float modifys = yNow / yScreen;
41
42 //设置主摄影机的 Viewport Rect, x = 0, y = (1 - 高度变化比例) / 2, w = 1, h = 高度变化比例
43 ca.rect = new Rect(0.0f, (1 - modifys) / 2, 1.0f, modifys);
44 }
45
46
47 //当设置的比例值小于设备比例值
48 if (proportion < 0) {
49 //计算新的屏幕宽度 屏幕的高度 / 屏幕的高度比例 * 屏幕宽度的比例
50 float xNow = (yScreen / screenRatioY) * screenRatioX;
51
52 //计算屏幕的宽度变化比例 新的屏幕宽度 / 初始的屏幕宽度
53 float modifys = xNow / xScreen;
54
55 //设置主摄影机的 Viewport Rect, x = (1 - 宽度变化比例) / 2, y = 0 , w = 宽度变化比例, h = 1
56 ca.rect = new Rect((1 - modifys) / 2, 0.0f, modifys, 1.0f);
57 }
58 }
59 }