效果图:
代码:
public Text m_Text;
private void Update()
{
SetTextWithEllipsis(m_Text, "我是一个文本,使用省略号表示!");
}
/// <summary>
/// 设置文本超出省略号显示
/// </summary>
/// <param name="text">Text组件</param>
/// <param name="content">文本内容</param>
public void SetTextWithEllipsis(Text text, string content)
{
//文本生成器 【可用于生成用于渲染的文本。缓存顶点、字符信息和行信息,以便节省内存。】
TextGenerator textGenerator = new TextGenerator();
//结构,用于存储 TextGeneration 的设置。即设置参数
TextGenerationSettings settings =
text.GetGenerationSettings(text.rectTransform.rect.size);
//设置文本格式 与原文本格式一致
settings.fontSize = text.fontSize;
settings.fontStyle = text.fontStyle;
settings.textAnchor = text.alignment;
textGenerator.Populate(content, settings);//文本内容 设置参数
int characterCountVisible = textGenerator.characterCountVisible; //获取文本可见 字符长度
//当文本内容不为空 且长度超出显示范围时 则省略号显示
if (characterCountVisible > 0 && content.Length > characterCountVisible)
{
content = content.Substring(0, characterCountVisible-1) +"…";
}
text.text = content;
}