using UnityEngine; using UnityEngine.UI; namespace JC.Unity.UI { [ExecuteAlways] public class BackgroundAdapter : MonoBehaviour { private CanvasScaler _scaler; void Start() { UpdateScale(); } int needUpdateCount = 3; void Update() { if (needUpdateCount > 0) { needUpdateCount--; UpdateScale(); } } 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; } } }