在做文本框的時候,我們經常碰到需要計算字符輸入的長度,然后適當地做處理。這個時候不能直接了當地拿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比較。