• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

UnityText添加空格导致换行问题的两种解决方法(还有lua的解决方法) ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请


借鉴于迷途小路

今天碰到了一个问题,在Text控件里面有两行的字体,在第一行中添加一个空格,然后导致第一行后面的内容都跑到了第二行。
一开始没搞懂,查了一下发现并不是bug。这个功能是Unity用于英语等西文的,是为了保证单词不会分开显示,所以第一行空格后面的字被Unity当成一个单词给换行处理了。


那么如何解决呢?

  • 方法1:使用全角空格
    在输入法里面把半角模式改为全角模式,然后输入空格。
    但这种方式输入的空格太大,跟一个tab的宽度差不多了。所以不使用这种方法。

  • 方法2:使用不换行空格
    平时我们打出的空格都是带这种换行功能的,但是也有一种不换行的空格,Unicode编码为\u00A0。
    好了,那么接下来使用这个编码就行了。但是又出现了一个新的问题,虽然在C#里面对于UTF-8编码的Unicode字符可以直接在字符串中输入使用。但是lua并不支持这样直接输入。。。


那么如何解决呢?
之前被我想的很复杂,但其实方法很简单。
"\u00A0" "\u{00A0}"
只需要稍微改变一下,用花括号括住16进制的字符编号即可。


下面是关于这些的部分lua官方中文手册
Lua的字符串是可以保存8位的任意值,其中包括用’\0’表示0。一般而言,你可以用字符的数字值来表示这个字符。用转义符\xXX方式,这里的XX必须是两个16进制字符,或者用\ddd转义符,而ddd则是必须是1到3个十进制字符。(注意,如果转义符接着后面还是数字的话,那么这个转义符必须写满3位。)

对于用UTF-8编码Unicode字符可以用转义符\u{XXX}(必须要一对花括号),这里的XXX是16进制的字符编码。

可以使用方括号括起来来定义一个字符串。我们在两个方括号之间插入n个等号来表示第n级开的方括号。因此一个0级开的方括号写作[[,1级开的方括号写作[=[,以此类推。闭方括号也作类似的定义;举个例子,一个4级闭的方括号写作]====]。一个长字符串有任何级的开方括号开始并由同级的闭方括号结束。这样的描述可以包含除了同一级别闭方括号外的任意字符。在这个形式下是不受分行限制的,不解析任何转义符,并且忽略任何级的方括号。其中任何形式的换行串(回车,换行,回车加换行,换行加回车)都会被转换成单个换行符。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
LUA中的字符串函数库发布时间:2022-07-22
下一篇:
Lua5.3.4 源码编译(win10、vs2015)发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap