using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using XericLibrary.Runtime.CustomEditor; namespace Deconstruction.Runtime.UI { /// /// 获取屏幕缩放 /// public class AutoCanvasScale : MonoBehaviour { #region 字段属性 public CanvasScaler canvasScaler; [Rename("设计尺寸")] public Vector2 StandardSize = new Vector2(1920,1080); public Vector2 ScaleMinMax = new Vector2(0.5f, 2); #endregion #region 生命周期 private void OnValidate() { FindCanvasScaler(); GetScreenScale(); } private void Awake() { FindCanvasScaler(); } private void LateUpdate() { canvasScaler.scaleFactor = GetScreenScale(); } #endregion #region 方法 private void FindCanvasScaler() { if (canvasScaler == null) canvasScaler = transform.GetComponent(); } private float GetScreenScale() { Vector2 screenSize = new Vector2(Screen.width, Screen.height); // Debug.Log(canvasScaler.referenceResolution); var sf = screenSize / StandardSize; return Mathf.Clamp(Mathf.Min(sf.x, sf.y), ScaleMinMax.x, ScaleMinMax.y); } #endregion } }