using UnityEngine; using UnityEngine.UI; namespace JC.Unity.UI { [ExecuteAlways] public class BackgroundAdapter : MonoBehaviour { private CanvasScaler _scaler; void Start() { UpdateScale(); } #if UNITY_EDITOR void Update() { UpdateScale(); } #endif void UpdateScale() { if (_scaler == null) _scaler = GetComponentInParent(); if (_scaler == null) return; var resolution = _scaler.referenceResolution; var rt = _scaler.transform as RectTransform; if (rt == null) return; var screenSize = rt.sizeDelta; var factor = Mathf.Max(screenSize.x / resolution.x, screenSize.y / resolution.y); var scale = Vector3.one * factor; transform.localScale = scale; } } }