ExtensionResize.cs 2.8 KB

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