105 lines
2.4 KiB
C#
105 lines
2.4 KiB
C#
using TMPro;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
[RequireComponent(typeof(TMP_Text))]
|
|
public class ControlTextSize : MonoBehaviour, ILayoutElement
|
|
{
|
|
private TMP_Text curTxt;
|
|
private bool cached = false;
|
|
|
|
public float maxPreferredWidth = 0f;
|
|
public float maxPreferredHeight = 0f;
|
|
|
|
public float flexibleHeight
|
|
{
|
|
get
|
|
{
|
|
cacheReferences();
|
|
return curTxt.flexibleHeight;
|
|
}
|
|
}
|
|
|
|
public float flexibleWidth
|
|
{
|
|
get
|
|
{
|
|
cacheReferences();
|
|
return curTxt.flexibleWidth;
|
|
}
|
|
}
|
|
|
|
public int layoutPriority
|
|
{
|
|
get { return 1; }
|
|
}
|
|
|
|
public float minHeight
|
|
{
|
|
get
|
|
{
|
|
cacheReferences();
|
|
return curTxt.minHeight;
|
|
}
|
|
}
|
|
|
|
public float minWidth
|
|
{
|
|
get
|
|
{
|
|
cacheReferences();
|
|
return curTxt.minWidth;
|
|
}
|
|
}
|
|
|
|
public float preferredHeight
|
|
{
|
|
get
|
|
{
|
|
cacheReferences();
|
|
if (Mathf.Approximately(maxPreferredHeight, 0f))
|
|
{
|
|
return curTxt.preferredHeight;
|
|
}
|
|
else
|
|
{
|
|
return curTxt.preferredHeight > maxPreferredHeight ? maxPreferredHeight : curTxt.preferredHeight;
|
|
}
|
|
}
|
|
}
|
|
|
|
public float preferredWidth
|
|
{
|
|
get
|
|
{
|
|
cacheReferences();
|
|
if (Mathf.Approximately(maxPreferredWidth, 0f))
|
|
{
|
|
return curTxt.preferredWidth;
|
|
}
|
|
else
|
|
{
|
|
return curTxt.preferredWidth > maxPreferredWidth ? maxPreferredWidth : curTxt.preferredWidth;
|
|
}
|
|
}
|
|
}
|
|
|
|
public void CalculateLayoutInputHorizontal()
|
|
{
|
|
cacheReferences();
|
|
}
|
|
|
|
public void CalculateLayoutInputVertical()
|
|
{
|
|
cacheReferences();
|
|
}
|
|
|
|
private void cacheReferences()
|
|
{
|
|
if (!cached)
|
|
{
|
|
curTxt = gameObject.GetComponent<TMP_Text>();
|
|
cached = true;
|
|
}
|
|
}
|
|
} |