3 using System.Collections;
8 public enum TextContainerAnchors { TopLeft = 0, Top = 1, TopRight = 2, Left = 3, Middle = 4, Right = 5, BottomLeft = 6, Bottom = 7, BottomRight = 8, Custom = 9 };
12 [RequireComponent(typeof(RectTransform))]
13 [AddComponentMenu(
"Layout/Text Container")]
17 #pragma warning disable 0618 // Disabled warning related to deprecated properties. This is for backwards compatibility. 19 public bool hasChanged
21 get {
return m_hasChanged; }
22 set { m_hasChanged = value; }
24 private bool m_hasChanged;
30 get {
return m_pivot; }
31 set {
if (m_pivot != value) { m_pivot = value; m_anchorPosition = GetAnchorPosition(m_pivot); m_hasChanged =
true;
OnContainerChanged(); } }
34 private Vector2 m_pivot;
37 public TextContainerAnchors anchorPosition
39 get {
return m_anchorPosition; }
40 set {
if (m_anchorPosition != value) { m_anchorPosition = value; m_pivot = GetPivot(m_anchorPosition); m_hasChanged =
true;
OnContainerChanged(); } }
43 private TextContainerAnchors m_anchorPosition = TextContainerAnchors.Middle;
49 get {
return m_rect; }
50 set {
if (m_rect != value) { m_rect = value; m_hasChanged =
true;
OnContainerChanged(); } }
58 get {
return new Vector2(m_rect.width, m_rect.height); }
59 set {
if (
new Vector2(m_rect.width, m_rect.height) != value) { SetRect(value); m_hasChanged =
true; m_isDefaultWidth =
false; m_isDefaultHeight =
false;
OnContainerChanged(); } }
66 get {
return m_rect.width; }
67 set { SetRect(
new Vector2(value, m_rect.height)); m_hasChanged =
true; m_isDefaultWidth =
false;
OnContainerChanged(); }
74 get {
return m_rect.height; }
75 set { SetRect(
new Vector2(m_rect.width, value)); m_hasChanged =
true; m_isDefaultHeight =
false;
OnContainerChanged(); }
80 public bool isDefaultWidth
82 get {
return m_isDefaultWidth; }
84 private bool m_isDefaultWidth;
87 public bool isDefaultHeight
89 get {
return m_isDefaultHeight; }
91 private bool m_isDefaultHeight;
94 public bool isAutoFitting
96 get {
return m_isAutoFitting; }
97 set { m_isAutoFitting = value; }
99 private bool m_isAutoFitting =
false;
103 public Vector3[] corners
105 get {
return m_corners; }
107 private Vector3[] m_corners =
new Vector3[4];
110 public Vector3[] worldCorners
112 get {
return m_worldCorners; }
114 private Vector3[] m_worldCorners =
new Vector3[4];
125 public Vector4 margins
127 get {
return m_margins; }
128 set {
if (m_margins != value) { m_margins = value; m_hasChanged =
true;
OnContainerChanged(); } }
131 private Vector4 m_margins;
141 if (m_rectTransform ==
null) m_rectTransform = GetComponent<RectTransform>();
143 return m_rectTransform;
146 private RectTransform m_rectTransform;
151 private static Vector2 k_defaultSize =
new Vector2(100, 100);
161 if (m_textMeshPro ==
null) m_textMeshPro = GetComponent<TextMeshPro>();
162 return m_textMeshPro;
168 protected override void Awake()
170 Debug.LogWarning(
"The Text Container component is now Obsolete and can safely be removed from [" + gameObject.name +
"].",
this);
206 if (this.m_rectTransform !=
null)
208 m_rectTransform.sizeDelta = this.size;
209 m_rectTransform.hasChanged =
true;
215 m_textMeshPro.
margin = m_margins;
221 protected override void OnValidate()
250 if (this.
rectTransform ==
null) m_rectTransform = gameObject.AddComponent<RectTransform>();
252 if (m_rectTransform.sizeDelta != k_defaultSize)
253 this.size = m_rectTransform.sizeDelta;
255 pivot = m_rectTransform.pivot;
262 private void SetRect(Vector2 size)
264 m_rect =
new Rect(m_rect.x, m_rect.y, size.x, size.y);
268 private void UpdateCorners()
270 m_corners[0] =
new Vector3(-m_pivot.x * m_rect.width, (- m_pivot.y) * m_rect.height);
271 m_corners[1] =
new Vector3(-m_pivot.x * m_rect.width, (1 - m_pivot.y) * m_rect.height);
272 m_corners[2] =
new Vector3((1 - m_pivot.x) * m_rect.width, (1 - m_pivot.y) * m_rect.height);
273 m_corners[3] =
new Vector3((1 - m_pivot.x) * m_rect.width, (- m_pivot.y) * m_rect.height);
276 if (m_rectTransform !=
null)
277 m_rectTransform.pivot = m_pivot;
304 Vector2 GetPivot(TextContainerAnchors anchor)
306 Vector2 pivot = Vector2.zero;
310 case TextContainerAnchors.TopLeft:
311 pivot =
new Vector2(0, 1);
313 case TextContainerAnchors.Top:
314 pivot =
new Vector2(0.5f, 1);
316 case TextContainerAnchors.TopRight:
317 pivot =
new Vector2(1, 1);
319 case TextContainerAnchors.Left:
320 pivot =
new Vector2(0, 0.5f);
322 case TextContainerAnchors.Middle:
323 pivot =
new Vector2(0.5f, 0.5f);
325 case TextContainerAnchors.Right:
326 pivot =
new Vector2(1, 0.5f);
328 case TextContainerAnchors.BottomLeft:
329 pivot =
new Vector2(0, 0);
331 case TextContainerAnchors.Bottom:
332 pivot =
new Vector2(0.5f, 0);
334 case TextContainerAnchors.BottomRight:
335 pivot =
new Vector2(1, 0);
344 TextContainerAnchors GetAnchorPosition(Vector2 pivot)
347 if (pivot ==
new Vector2(0, 1))
348 return TextContainerAnchors.TopLeft;
349 else if (pivot ==
new Vector2(0.5f, 1))
350 return TextContainerAnchors.Top;
351 else if (pivot ==
new Vector2(1f, 1))
352 return TextContainerAnchors.TopRight;
353 else if (pivot ==
new Vector2(0, 0.5f))
354 return TextContainerAnchors.Left;
355 else if (pivot ==
new Vector2(0.5f, 0.5f))
356 return TextContainerAnchors.Middle;
357 else if (pivot ==
new Vector2(1, 0.5f))
358 return TextContainerAnchors.Right;
359 else if (pivot ==
new Vector2(0, 0))
360 return TextContainerAnchors.BottomLeft;
361 else if (pivot ==
new Vector2(0.5f, 0))
362 return TextContainerAnchors.Bottom;
363 else if (pivot ==
new Vector2(1, 0))
364 return TextContainerAnchors.BottomRight;
366 return TextContainerAnchors.Custom;
void OnContainerChanged()
RectTransform rectTransform
The RectTransform used by the object
override void SetVerticesDirty()
Schedule rebuilding of the text geometry.
virtual Vector4 margin
The margins of the text object.
override void OnDisable()
override void OnRectTransformDimensionsChange()
Callback from Unity to handle RectTransform changes.