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



    Unity Text添加空格导致换行问题

    借鉴于迷途小路

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


    那么如何解决呢?

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

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


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


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

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

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

  • 相关阅读:
    【[SDOI2014]旅行】
    【[USACO16OPEN]262144】
    【[SDOi2012]Longge的问题】
    【[POI2000]病毒】
    【不同子串个数】
    【工艺】
    Lambda使用深入解析
    Lambda表达式语法进一步巩固
    给之前绘制的图形菜单增加随触摸360度旋转效果
    给之前绘制的饼状图增加点击扩大突出效果
  • 原文地址:https://www.cnblogs.com/Fflyqaq/p/13545797.html
Copyright © 2020-2023  润新知