using UnityEngine;
using UnityEngine.UI;
public class TextWithEllipsis : Text {
private const string NonBreakingSpace = "\u00A0";//不换行空格的Unicode编码
protected override void UpdateGeometry()
{
SetTextWithEllipsis();
base.UpdateGeometry();
}
public void SetTextWithEllipsis()
{
string value = m_Text;
value = value.Replace(" ", NonBreakingSpace);
TextGenerator generator = new TextGenerator();
RectTransform rectTransform = GetComponent<RectTransform>();
//设置文本绘制范围
TextGenerationSettings settings = GetGenerationSettings(rectTransform.rect.size);
generator.Populate(value, settings);
//设置可见的字符数
int characterVisibleCount = generator.characterCountVisible;
string updateText = value;
//Debug.Log(updateText);
//超出部分以省略号显示
if (value.Length > characterVisibleCount)
{
updateText = value.Substring(0, characterVisibleCount - 1);
updateText += "...";
}
m_Text = updateText;
}
}
UI Text文本绘制范围,超出字数... 显示
于 2022-09-16 17:38:50 首次发布