9 [RequireComponent(typeof(RectTransform))]
10 [AddComponentMenu(
"Layout/Extensions/Tile Size Fitter")]
14 private Vector2 m_Border = Vector2.zero;
15 public Vector2
Border {
get {
return m_Border; }
set {
if (SetPropertyUtility.SetStruct(ref m_Border, value))
SetDirty(); } }
18 private Vector2 m_TileSize = Vector2.zero;
19 public Vector2
TileSize {
get {
return m_TileSize; }
set {
if (SetPropertyUtility.SetStruct(ref m_TileSize, value))
SetDirty(); } }
21 [System.NonSerialized]
22 private RectTransform m_Rect;
23 private RectTransform rectTransform {
get {
if (m_Rect ==
null) m_Rect = GetComponent<RectTransform>();
return m_Rect; } }
25 private DrivenRectTransformTracker m_Tracker;
27 #region Unity Lifetime calls
38 LayoutRebuilder.MarkLayoutForRebuild(rectTransform);
49 private void UpdateRect()
56 m_Tracker.Add(
this, rectTransform,
57 DrivenTransformProperties.Anchors |
58 DrivenTransformProperties.AnchoredPosition);
59 rectTransform.anchorMin = Vector2.zero;
60 rectTransform.anchorMax = Vector2.one;
61 rectTransform.anchoredPosition = Vector2.zero;
63 m_Tracker.Add(
this, rectTransform,
64 DrivenTransformProperties.SizeDeltaX |
65 DrivenTransformProperties.SizeDeltaY);
66 Vector2 sizeDelta = GetParentSize() -
Border;
75 rectTransform.sizeDelta = -sizeDelta;
78 private Vector2 GetParentSize()
80 RectTransform parent = rectTransform.parent as RectTransform;
83 return parent.rect.size;
98 protected override void OnValidate()
100 m_TileSize.x = Mathf.Clamp(m_TileSize.x, 0.001f, 1000f);
101 m_TileSize.y = Mathf.Clamp(m_TileSize.y, 0.001f, 1000f);
virtual void SetLayoutVertical()
override void OnRectTransformDimensionsChange()
override void OnDisable()
virtual void SetLayoutHorizontal()
Credit Erdener Gonenc - @PixelEnvision.