using UnityEngine; using UnityEngine.UI; /// /// Text (UGUI) 组件扩展类 /// 功能 /// 实现文字过长省略号显示 /// public static class TextExtension { // operating in no overflow (Horizonal|Vertical) public static void SetTextWithEllipsis(this Text textComponent, string value) { // create generator with value and current Rect var generator = new TextGenerator(); var rectTransform = textComponent.GetComponent(); var settings = textComponent.GetGenerationSettings(rectTransform.rect.size); generator.Populate(value, settings); // truncate visible value and add ellipsis var characterCountVisible = generator.characterCountVisible; var updatedText = value; if (value.Length > characterCountVisible) { updatedText = value.Substring(0, characterCountVisible - 1); updatedText += "…"; } // update text textComponent.text = updatedText; } /// /// Unity 2019 版本以上 /// /// /// public static void SetTextWithEllipsis(this Text textComponent, string value, int characterVisibleCount) { var updatedText = value; // 判断是否需要过长显示省略号 if (value.Length > characterVisibleCount) { updatedText = value.Substring(0, characterVisibleCount - 1); updatedText += "…"; } // update text textComponent.text = updatedText; } }