UGUI获取文本的字符内容像素宽度 【转】
在做文本框的时候,我们经常碰到需要计算字符输入的长度,然后适当地做处理。这个时候不能直接了当地拿text.Length来用,原因有:
1、字符会因为fontSize的大小不同而有不同的宽度;
2、即使fontSize在你的场景里是同一的,字符也有英文字符和中文字符等的差别,它们的宽度也是相差极大的,比如字符I和字符N的宽度就很不一样,而与任何一个中文字符又是不一样的。
好在Unity也提供了这样的方法给我们使用。如下例:
public Text text;
?public int allTextWidth;
foreach(var item in input.text)
{
CharacterInfo info = new CharacterInfo();
text.font.GetCharacterInfo(item, out info, 14);//14是字体的字号,可以从text里获取。
allTextWidth += info.advance;//总的字符宽度
}
最后得到的就是总的字符宽度,以像素为单位。
比如你的文本框只允许显示100像素长度的字符,如果超过这个大小的话,则以省略号...显示,就可以拿这个值与100比较。