51 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C#
		
	
			
		
		
	
	
			51 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C#
		
	
using System.Collections;
 | 
						|
using System.Collections.Generic;
 | 
						|
using UnityEngine;
 | 
						|
using UnityEngine.UI;
 | 
						|
 | 
						|
/// <summary>
 | 
						|
/// 
 | 
						|
/// </summary>
 | 
						|
public class UIBgAdaptive : MonoBehaviour
 | 
						|
{
 | 
						|
    public GameObject[] bgList;
 | 
						|
    void Start()
 | 
						|
    {
 | 
						|
        for (int i = 0; i < bgList.Length; i++)
 | 
						|
        {
 | 
						|
            if (bgList[i] != null)
 | 
						|
            {
 | 
						|
                bgList[i].GetComponent<RectTransform>().anchorMin = new Vector2(0.5f, 0.5f);
 | 
						|
                bgList[i].GetComponent<RectTransform>().anchorMax = new Vector2(0.5f, 0.5f);
 | 
						|
                bgList[i].GetComponent<RectTransform>().pivot = new Vector2(0.5f, 0.5f);
 | 
						|
                bgList[i].transform.localScale = new Vector3(1, 1, 1);
 | 
						|
                bgList[i].transform.localPosition = new Vector3(0, 0, 0);
 | 
						|
 | 
						|
                //float curHeight = 1920 * (Screen.height / Screen.width) / (1920 / 1080);
 | 
						|
                //float curWidth = (1080f / 1920f) * curHeight;
 | 
						|
                //bgList[i].GetComponent<RectTransform>().sizeDelta = new Vector2(curWidth, curHeight);
 | 
						|
                if (Screen.height/Screen.width >= 1920/1080f)
 | 
						|
                {
 | 
						|
                    //--计算比例因子    比例因子 = 10 ^ ((lg(屏幕宽 / 开发宽) + lg(屏幕高 / 开发高) / 2))
 | 
						|
                    //local log = math.log(Screen.width / 1080, 10) + math.log(Screen.height / 1920, 10)
 | 
						|
                    //local avg = log / 2
 | 
						|
                    //local ft = math.pow(10, avg)
 | 
						|
                    //-- 实际分辨率 = 屏幕分辨率 / 比例因子
 | 
						|
                    //UIManager.UIHeight = Screen.height / ft
 | 
						|
                    //UIManager.UIWidth = Screen.width / ft
 | 
						|
                    float log = Mathf.Log10(Screen.width / 1080f) + Mathf.Log10(Screen.height / 1920f);
 | 
						|
                    float avg = log / 2f;
 | 
						|
                    float ft = Mathf.Pow(10, avg);
 | 
						|
                    float curHeight = Screen.height / ft;
 | 
						|
                    float curWidth = curHeight /1920f * 1080f;
 | 
						|
                    //XDebug.Log.l("Screen.height     " + Screen.height+ "     curWidth    "+ curWidth);
 | 
						|
                    bgList[i].GetComponent<RectTransform>().sizeDelta = new Vector2(curWidth, curHeight);
 | 
						|
                }
 | 
						|
                else
 | 
						|
                {
 | 
						|
                    bgList[i].GetComponent<RectTransform>().sizeDelta = new Vector2(1080, 1920) * 1.2f;
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
     }
 | 
						|
} |