一般来说,昵称等用户输入的自定义数据都需要限制一下显示的长度。
NGUI的INPUT输入框限制的是最大的char字符数,char字符数其实就是string的长度,中文算一个,英文也算一个。无法达到限制字节的效果。
如下:
![[Unity3d]NGUI的INPUT输入框限制中文字节数问题 [Unity3d]NGUI的INPUT输入框限制中文字节数问题](https://i-blog.csdnimg.cn/blog_migrate/fcfc8935515828f08611f52964a4f571.jpeg)
既然NGUI已经提供了限制char的效果,咱们不妨将这个功能改为限制字节数。限制字符数的原理主要是计算当前字符数,若超过则删除最后添加的一个文字,要注意到很可能用户会同时输入多个字,所以需要循环删除最后一个字符,直到
字节数小于等于设定值。
具体实现方式:
1.找到UIInput.cs这个脚本,找到UpdateLabel ()函数。
2.然后你会看到有下面这一行代码:
if (maxChars > 0 && mText.Length > maxChars) mText = mText.Substring(0, maxChars);
很显然是限制char字数的,将这行代码注释掉。
3.加上以下代码:
//fix bytes length to adapt
byte[] bytestr = System.Text.Encoding.Default.GetBytes(mText);
if (maxChars > 0 && bytestr.Length > maxChars)
{
}
//fix end
http://blog.sina.com.cn/s/blog_5b6cb9500101fabw.html