BetterVerticalLayoutGroup.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using UnityEngine;
  6. using UnityEngine.Serialization;
  7. using UnityEngine.UI;
  8. namespace TheraBytes.BetterUi
  9. {
  10. [HelpURL("https://documentation.therabytes.de/better-ui/BetterVerticalLayoutGroup.html")]
  11. [Obsolete("Better use BetterAxisAlignedLayoutGroup.")]
  12. [AddComponentMenu("Better UI/Obsolete/Better Vertical Layout Group", 30)]
  13. public class BetterVerticalLayoutGroup
  14. : VerticalLayoutGroup, IBetterHorizontalOrVerticalLayoutGroup, IResolutionDependency
  15. {
  16. public MarginSizeModifier PaddingSizer { get { return paddingSizerFallback; } }
  17. public FloatSizeModifier SpacingSizer { get { return spacingSizerFallback; } }
  18. [FormerlySerializedAs("paddingSizer")]
  19. [SerializeField]
  20. MarginSizeModifier paddingSizerFallback =
  21. new MarginSizeModifier(new Margin(), new Margin(), new Margin(1000, 1000, 1000, 1000));
  22. [FormerlySerializedAs("spacingSizer")]
  23. [SerializeField]
  24. FloatSizeModifier spacingSizerFallback =
  25. new FloatSizeModifier(0, 0, 300);
  26. protected override void OnEnable()
  27. {
  28. base.OnEnable();
  29. CalculateCellSize();
  30. }
  31. public void OnResolutionChanged()
  32. {
  33. CalculateCellSize();
  34. }
  35. public void CalculateCellSize()
  36. {
  37. Rect r = this.rectTransform.rect;
  38. if (r.width == float.NaN || r.height == float.NaN)
  39. return;
  40. base.m_Spacing = SpacingSizer.CalculateSize(this);
  41. Margin pad = PaddingSizer.CalculateSize(this);
  42. pad.CopyValuesTo(base.m_Padding);
  43. }
  44. #if UNITY_EDITOR
  45. protected override void OnValidate()
  46. {
  47. CalculateCellSize();
  48. base.OnValidate();
  49. }
  50. #endif
  51. }
  52. }