| 12345678910111213141516171819202122232425262728293031323334353637 |
- 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<CanvasScaler>();
- 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;
- }
- }
- }
|