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 }
时间: 2024-10-10 23:00:09