BackgroundAdapter.cs 917 B

1234567891011121314151617181920212223242526272829303132333435
  1. using UnityEngine;
  2. using UnityEngine.UI;
  3. namespace JC.Unity.UI {
  4. [ExecuteAlways]
  5. public class BackgroundAdapter : MonoBehaviour
  6. {
  7. private CanvasScaler _scaler;
  8. void Start()
  9. {
  10. UpdateScale();
  11. }
  12. #if UNITY_EDITOR
  13. void Update()
  14. {
  15. UpdateScale();
  16. }
  17. #endif
  18. void UpdateScale()
  19. {
  20. if (_scaler == null) _scaler = GetComponentInParent<CanvasScaler>();
  21. if (_scaler == null) return;
  22. var resolution = _scaler.referenceResolution;
  23. var rt = _scaler.transform as RectTransform;
  24. if (rt == null) return;
  25. var screenSize = rt.sizeDelta;
  26. var factor = Mathf.Max(screenSize.x / resolution.x, screenSize.y / resolution.y);
  27. var scale = Vector3.one * factor;
  28. transform.localScale = scale;
  29. }
  30. }
  31. }