Unity UGUI 之 实现 Text 文本文字过长,省略号显示(TextMeshPro 和常规 Text 二种方法)

目录

Unity UGUI 之 实现 Text 文本文字过长,省略号显示(TextMeshPro 和常规 Text 二种方法)

一、简单介绍

二、实现原理

三、注意事项

四、效果预览

五、实现步骤

常规 Text

TextMeshPro

六、关键脚本


一、简单介绍

UGUI,是Unity自带的 GUI 系统,震撼力一些常规的操作,便于后期类似操作的参考。

本节介绍,在Unity中文本文字过多的,使用省略号代替的方法,二种方式,目前各有局限性。

二、实现原理

1、常规Text 使用 TextGenerator().characterCountVisible 得到可显示的长度,当字长大于 TextGenerator().characterCountVisible,就省略号代替

2、TextMeshPro 里面自带属性 Ellipsis ,直接添加此属性即可,实现文字过长省略号显示

三、注意事项

1、常规Text 的方法到 Unity 2019 以上 好像 TextGenerator().characterCountVisible  一直返回为 0 ,不能正常获取显示长度(有谁知道原因的话,可留言)

2、TextMeshPro 目前不支持中文,需要自己构建中文字体

四、效果预览

五、实现步骤

常规 Text

1、打开Unity ,新建空工程

2、在场景中添加 Text 组件,用于测试

3、在工程中新建脚本,TextExtension 扩展脚本,编写文字过长省略号显示的代码,TestSetTextWithEllipsis 用于测试 TextExtension 脚本的功能

4、把 TestSetTextWithEllipsis 挂载到场景中

5、运行场景效果如上

TextMeshPro

1、打开Unity ,新建空工程

2、在场景中添加 TextMeshPro  组件,用于测试

3、在 TextMmeshProUGUI 属性中 overflow 属性设置为 Ellipsis ,即可实现过长文字省略号显示

4、运行场景,效果如下

六、关键脚本

1、TextExtension.cs


using UnityEngine;
using UnityEngine.UI;/// <summary>
/// Text (UGUI) 组件扩展类
/// 功能
/// 实现文字过长省略号显示
/// </summary>
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 Rectvar generator = new TextGenerator();var rectTransform = textComponent.GetComponent<RectTransform>();var settings = textComponent.GetGenerationSettings(rectTransform.rect.size);generator.Populate(value, settings);// truncate visible value and add ellipsisvar characterCountVisible = generator.characterCountVisible;var updatedText = value;if (value.Length > characterCountVisible){updatedText = value.Substring(0, characterCountVisible - 1);updatedText += "…";}// update texttextComponent.text = updatedText;}/// <summary>///  Unity 2019 版本以上/// </summary>/// <param name="textComponent"></param>/// <param name="value"></param>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 texttextComponent.text = updatedText;}
}

2、TestSetTextWithEllipsis.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class TestSetTextWithEllipsis : MonoBehaviour
{public Text text;string strValue = string.Empty;// Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update(){if (Input.GetKeyDown(KeyCode.A)){strValue +=  " You";Debug.Log("strValue "+ strValue);text.SetTextWithEllipsis(strValue);}}
}

Unity UGUI 之 实现 Text 文本文字过长,省略号显示(TextMeshPro 和常规 Text 二种方法)相关推荐

  1. Unity UGUI 效果 之 UI 元素 多边形UI (例如雷达图,圆形,不规则多边形 UI等)显示 的简单实现的几种方法整理

    Unity UGUI 效果 之 UI 元素 多边形UI (例如雷达图,圆形,不规则多边形 UI等)显示 的简单实现的几种方法整理 目录 Unity UGUI 效果 之 UI 元素 多边形UI (例如雷 ...

  2. Unity Android 之 应用打开手机的指定网页浏览器(external browser)的两种方法(封装aar和不用封装aar方法)

    Unity Android 之 应用打开手机的指定网页浏览器(external browser)的两种方法(封装aar和不用封装aar方法) 目录 Unity Android 之 应用打开手机的指定网 ...

  3. CSS文字超出部分省略号显示

    文章目录[隐藏] CSS 文字超出部分省略号显示前言 CSS 文字超出部分省略号显示实现方法 CSS 文字超出部分省略号显示实现效果 CSS 文字超出部分省略号显示前言 在我们开发过程中,其实有这样的 ...

  4. CSS实现单行(多行)文本超出部分用省略号显示

    前言(日常废话) 该文写的是CSS如何实现单行以及多行文本末尾的超出部分用省略号来表示. 目录 1.单行超出 2.多行超出 正文 现在有着一个这样的div,需要两个效果,一个是单行超出部分用省略号表示 ...

  5. css 文字过长 省略号,css实现文字过长显示省略号的方法

    因为网页排版的需要,有些地方需要过长的问题加上省略号.比如:标题限制20个中文的宽度,超出的就用省略号代替.之前会使用程序截取的方法,不过使用css来截取更有利于SEO. 下面就介绍一下具体的使用方法 ...

  6. Echarts-axislabel文字过长导致显示不全或重叠

    先看两张图 按目前情况,官方并为对axislabel的高度或者宽度做调整.所以解决方案只能从其他方案下手 解决方案有几种 第一种为上图解决方案 设置grid属性定义图的大小来释放空间,使得axisla ...

  7. 文本超出长度用用省略号显示

    div { width: 200px; height: 150px; background-color: pink; margin: 100px auto; /* 长单词和长数字,不会强行中断换行,默 ...

  8. 《vue+vant 文本超出两行部分省略号显示》

    今天做移动端项目,遇到了这个问题 面向百度后总结得到了这个结果. 首先,我们要知道css的三条属性. overflow:hidden; //超出的文本隐藏 text-overflow:ellipsis ...

  9. HTML页面table中文字不以省略号显示

    今天在弄让标签中多余的文字以省略号显示时,遇到一个有意思的问题,道友请看. 代码 <!DOCTYPE HTML> <html> <head> <meta ch ...

最新文章

  1. 前端进阶之路:初涉Less
  2. HDU 2544 最短路(各种最短路算法的实现)
  3. Mysql数据库,项目需求需要数据还原的数据表结构构思方案
  4. (73)Verilog HDL系统函数和任务:$monitor
  5. 低智商屌丝蒟蒻的2012成都题解
  6. 基于RV1126平台imx291分析 --- media部件注册 mipi csi
  7. fpga开发教程 labview_NI LabVIEW高性能FPGA开发者指南
  8. 乐视电视安装鸿蒙系统,乐视电视更新后无法识别apk文件怎么办?方法教程
  9. 解决System进程占用80端口的问题
  10. 从Ajax聊一聊Jsonp hijacking
  11. Qt for WinRT
  12. the win16 subsystem was unable to enter protected mode,DOSX.EXE must be in your AUTOEXEC.NT and pres
  13. HTML+CSS+JS 科学计算器apk+源码
  14. 9.28javaweb
  15. K8s使用Ceph纠删码池做持久化卷
  16. Not Found The requested URL /admin/index was not found on this server.
  17. html5待办事项模板,待办事项列表模板
  18. AcWing:Dijkstra
  19. 手把手教你搭建入门级免费私有云盘NAS——基于syncthing——基础篇(树莓派、PC机)
  20. 华为od机考真题-快速人名查找

热门文章

  1. 【Android开发】Android Studio中进行简单的WebView构建浏览器开发1
  2. CNCF X 阿里巴巴云原生技术公开课
  3. 經典IP華麗回歸,NFT遊戲《開心農場物語》将於2022年5月30日13:30正式公測
  4. 超详细、零基础安装纯净的原版Windows 10系统
  5. 比心app源码,Java 单例模式
  6. 2022年广西桂林二级建造师考试精选试题及答案
  7. uni 读取网络json_uniapp存放json格式的数据
  8. 农村土地确权之成果展示 —— 三个调查表
  9. angularjs初窥门径
  10. c语言函数输出输出型参数_c语言技巧多个输出参数