RectTransformExtension.cs 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. using System.Collections.Generic;
  2. using UnityEngine;
  3. public static class RectTransformExtension
  4. {
  5. private static Dictionary<RectTransform, Vector2> originSizeDeltaDict = new Dictionary<RectTransform, Vector2>();
  6. private static void AddToOriginSizeDeltaDict(RectTransform rectTrans)
  7. {
  8. if (!originSizeDeltaDict.ContainsKey(rectTrans))
  9. {
  10. originSizeDeltaDict.Add(rectTrans, rectTrans.sizeDelta);
  11. }
  12. }
  13. public static void RecoverSizeDelta(this RectTransform rectTrans)
  14. {
  15. if (originSizeDeltaDict.ContainsKey(rectTrans))
  16. {
  17. rectTrans.sizeDelta = originSizeDeltaDict[rectTrans];
  18. }
  19. }
  20. public static void SetSizeDeltaXByRatio(this RectTransform rectTrans, float xRatio)
  21. {
  22. AddToOriginSizeDeltaDict(rectTrans);
  23. RecoverSizeDelta(rectTrans);
  24. Vector2 newSizeDelta = new Vector2();
  25. newSizeDelta.x = rectTrans.sizeDelta.x * xRatio;
  26. newSizeDelta.y = rectTrans.sizeDelta.y;
  27. rectTrans.sizeDelta = newSizeDelta;
  28. }
  29. public static void SetSizeDeltaYByRatio(this RectTransform rectTrans, float yRatio)
  30. {
  31. AddToOriginSizeDeltaDict(rectTrans);
  32. RecoverSizeDelta(rectTrans);
  33. Vector2 newSizeDelta = new Vector2();
  34. newSizeDelta.x = rectTrans.sizeDelta.x;
  35. newSizeDelta.y = rectTrans.sizeDelta.y * yRatio;
  36. rectTrans.sizeDelta = newSizeDelta;
  37. }
  38. public static void SetSizeDeltaByRatio(this RectTransform rectTrans, float xRatio, float yRatio)
  39. {
  40. AddToOriginSizeDeltaDict(rectTrans);
  41. RecoverSizeDelta(rectTrans);
  42. Vector2 newSizeDelta = new Vector2();
  43. newSizeDelta.x = rectTrans.sizeDelta.x*xRatio;
  44. newSizeDelta.y = rectTrans.sizeDelta.y*yRatio;
  45. rectTrans.sizeDelta = newSizeDelta;
  46. }
  47. public static void SetSizeDeltaX(this RectTransform rectTrans, float xSize)
  48. {
  49. AddToOriginSizeDeltaDict(rectTrans);
  50. RecoverSizeDelta(rectTrans);
  51. Vector2 newSizeDelta = new Vector2();
  52. newSizeDelta.x = xSize;
  53. newSizeDelta.y = rectTrans.sizeDelta.y;
  54. rectTrans.sizeDelta = newSizeDelta;
  55. }
  56. public static void SetSizeDeltaY(this RectTransform rectTrans, float ySize)
  57. {
  58. AddToOriginSizeDeltaDict(rectTrans);
  59. RecoverSizeDelta(rectTrans);
  60. Vector2 newSizeDelta = new Vector2();
  61. newSizeDelta.x = rectTrans.sizeDelta.x;
  62. newSizeDelta.y = ySize;
  63. rectTrans.sizeDelta = newSizeDelta;
  64. }
  65. public static void SetSizeDelta(this RectTransform rectTrans, float xSize, float ySize)
  66. {
  67. AddToOriginSizeDeltaDict(rectTrans);
  68. RecoverSizeDelta(rectTrans);
  69. Vector2 newSizeDelta = new Vector2();
  70. newSizeDelta.x = xSize;
  71. newSizeDelta.y = ySize;
  72. rectTrans.sizeDelta = newSizeDelta;
  73. }
  74. }