BackgroundAdapter.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. using UnityEngine;
  2. using UnityEngine.UI;
  3. namespace JC.Unity.UI {
  4. public class AdapterUtils
  5. {
  6. public static void MakeRectTransformFullScreen(MonoBehaviour mono) {
  7. RectTransform rtf = mono.GetComponent<RectTransform>();
  8. rtf.anchorMin = Vector2.zero;
  9. rtf.anchorMax = new Vector2(1, 1);
  10. rtf.offsetMin = Vector2.zero;
  11. rtf.offsetMax = Vector2.zero;
  12. }
  13. }
  14. public class RectTransformUtils
  15. {
  16. public static Vector3 CanvasV3ToScreenV3(Vector3 vector3, RectTransform rectTransform) {
  17. Vector2 canvasSize = rectTransform.GetComponentInParent<CanvasScaler>().GetComponent<RectTransform>().sizeDelta;
  18. vector3.y *= Screen.height / canvasSize.y;
  19. vector3.x *= Screen.width / canvasSize.x;
  20. return vector3;
  21. }
  22. public static Vector3 ScreenV3ToCanvasV3(Vector3 vector3, RectTransform rectTransform) {
  23. Vector2 canvasSize = rectTransform.GetComponentInParent<CanvasScaler>().GetComponent<RectTransform>().sizeDelta;
  24. vector3.y *= canvasSize.y / Screen.height;
  25. vector3.x *= canvasSize.x / Screen.width;
  26. return vector3;
  27. }
  28. public static Vector3 GetPositionByPivot(RectTransform rectTransform, Vector2 pivot) {
  29. Vector2 sizeInScreen = CanvasV3ToScreenV3(rectTransform.rect.size, rectTransform);
  30. Vector2 deltaPivot = pivot - rectTransform.pivot;
  31. Vector3 deltaPos = sizeInScreen * deltaPivot;
  32. return rectTransform.position + deltaPos;
  33. }
  34. }
  35. public class CanvasUtils
  36. {
  37. public static void PlusSortOrder(GameObject src, GameObject des, int plusValue) {
  38. des.GetComponent<Canvas>().sortingOrder = src.GetComponent<Canvas>().sortingOrder + plusValue;
  39. }
  40. }
  41. [ExecuteAlways]
  42. public class BackgroundAdapter : MonoBehaviour
  43. {
  44. private CanvasScaler _scaler;
  45. void Start()
  46. {
  47. UpdateScale();
  48. }
  49. #if UNITY_EDITOR
  50. void Update()
  51. {
  52. UpdateScale();
  53. }
  54. #endif
  55. void UpdateScale()
  56. {
  57. if (_scaler == null) _scaler = GetComponentInParent<CanvasScaler>();
  58. if (_scaler == null) return;
  59. var resolution = _scaler.referenceResolution;
  60. var rt = _scaler.transform as RectTransform;
  61. if (rt == null) return;
  62. var screenSize = rt.sizeDelta;
  63. var factor = Mathf.Max(screenSize.x / resolution.x, screenSize.y / resolution.y);
  64. var scale = Vector3.one * factor;
  65. transform.localScale = scale;
  66. }
  67. }
  68. }