Unity 实现文字过长显示省略号

在Unity中实现文字过长显示省略号的需求,可以通过TextMesh Pro或自定义代码来实现。TextMesh Pro虽然功能强大,但不支持动态字体,可能导致字体资源过大。自行编写代码可以通过TextGenerator动态计算字符数,但中文处理时可能提前截断,通过修改代码可以优化这一问题。
摘要由CSDN通过智能技术生成

需求:假设有一行文字由于界面空间不足只能显示一部分,那么剩余部分需要被截断,并且显示出来的文字末尾需要添加省略号“…”。比如“一二三四五六七八九十”,最终显示出来的样子是“一二三四…”。

这个需求在 CSS 中倒是挺好实现的。(题外话:这只限于显示出来的文字只有一行的情况。多行的情况下还是没那么容易,除非采用 WebKit 的 CSS 扩展属性 -webkit-line-clamp,不考虑兼容 W3C 标准。)但是在 Unity 中则需要摸索一下。目前已知的有两种方案。

方案一:使用 TextMesh Pro

当前的 Unity 2018 已经集成了 TextMesh Pro 插件(未确认之前的 Unity 版本是否集成)。这个插件非常强大,自然也包含了文字溢出时显示省略号的功能。使用时只要将 TextMesh Pro UGUI 组件中的 Overflow 选项设为 Ellipsis 即可。这个插件甚至能够很自然地实现多行文本的省略号截断。

但是这个方案有很明显的缺点—— TextMesh Pro 不支持动态字体,因此除非产品只需要英文,并且愿意使用 TextMesh Pro 自带的默认字体,否则一般都需要用插件自带的 Font Asset Creator 制作静态字体。这就意味着至少有如下几点需要注意:

  • TextMesh Pro 用的是 Unicode 编码,因此制作字体的时候要确保包含编码为 u2026 也就是省略号的字符,否则省略号截断的功能就没有效果。
  • 静态字体往往体积很大。我曾试着制作8192 × 8192的3500常用汉字的字体贴图
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值