ExtensionResize.cs 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. using UnityEngine;
  2. using UnityEngine.UI;
  3. public static class ExtensionResize
  4. {
  5. public static void Resize(this Image image, bool ratio, float x = -999999999, float y = -999999999)
  6. {
  7. Vector2 newSize;
  8. SizeMap(ratio, image.sprite.rect.size, ref x, ref y);
  9. if (ratio)
  10. {
  11. newSize = image.sprite.rect.size;
  12. newSize.x *= x;
  13. newSize.y *= y;
  14. }
  15. else
  16. {
  17. newSize = new Vector2(x, y);
  18. }
  19. image.rectTransform.sizeDelta = newSize;
  20. }
  21. public static void Resize(this Image image, bool ratio, Vector2 size)
  22. {
  23. Vector2 newSize;
  24. if (ratio)
  25. {
  26. newSize = image.sprite.rect.size;
  27. newSize.x *= size.x;
  28. newSize.y *= size.y;
  29. }
  30. else
  31. {
  32. newSize = size;
  33. }
  34. image.rectTransform.sizeDelta = newSize;
  35. }
  36. public static void Resize(this RectTransform rectTransform, bool ratio, float x = -999999999, float y = -999999999)
  37. {
  38. Vector2 newSize;
  39. SizeMap(ratio, rectTransform.rect.size, ref x, ref y);
  40. if (ratio)
  41. {
  42. newSize = rectTransform.rect.size;
  43. newSize.x *= x;
  44. newSize.y *= y;
  45. }
  46. else
  47. {
  48. newSize = new Vector2(x, y);
  49. }
  50. rectTransform.sizeDelta = newSize;
  51. }
  52. public static void Resize(this RectTransform rectTransform, bool ratio, Vector2 size)
  53. {
  54. Vector2 newSize;
  55. if (ratio)
  56. {
  57. newSize = rectTransform.rect.size;
  58. newSize.x *= size.x;
  59. newSize.y *= size.y;
  60. }
  61. else
  62. {
  63. newSize = size;
  64. }
  65. rectTransform.sizeDelta = newSize;
  66. }
  67. public static void Resize(this Text text, bool preferredWidth, bool preferredHeight)
  68. {
  69. Vector2 newSize = new Vector2();
  70. if (preferredWidth)
  71. {
  72. newSize.x = text.preferredWidth;
  73. }
  74. else
  75. {
  76. newSize.x = -999999999;
  77. }
  78. if (preferredHeight)
  79. {
  80. newSize.x = text.preferredHeight;
  81. }
  82. else
  83. {
  84. newSize.y = -999999999;
  85. }
  86. text.rectTransform.Resize(false, newSize.x, newSize.y);
  87. }
  88. private static void SizeMap(bool ratio, Vector2 size, ref float x, ref float y)
  89. {
  90. if (ratio)
  91. {
  92. if (x.Equal(-999999999))
  93. {
  94. x = 1;
  95. }
  96. if (y.Equal(-999999999))
  97. {
  98. y = 1;
  99. }
  100. }
  101. else
  102. {
  103. if (x.Equal(-999999999))
  104. {
  105. x = size.x;
  106. }
  107. if (y.Equal(-999999999))
  108. {
  109. y = size.y;
  110. }
  111. }
  112. }
  113. }