BackgroundAdapter.cs 1002 B

12345678910111213141516171819202122232425262728293031323334353637
  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. int needUpdateCount = 3;
  13. void Update()
  14. {
  15. if (needUpdateCount > 0) {
  16. needUpdateCount--;
  17. UpdateScale();
  18. }
  19. }
  20. void UpdateScale()
  21. {
  22. if (_scaler == null) _scaler = GetComponentInParent<CanvasScaler>();
  23. if (_scaler == null) return;
  24. var resolution = _scaler.referenceResolution;
  25. var rt = _scaler.transform as RectTransform;
  26. if (rt == null) return;
  27. var screenSize = rt.sizeDelta;
  28. var factor = Mathf.Max(screenSize.x / resolution.x, screenSize.y / resolution.y);
  29. var scale = Vector3.one * factor;
  30. transform.localScale = scale;
  31. }
  32. }
  33. }