您的位置:首页 > 移动开发 > Unity3D

[Unity3d]NGUI的INPUT输入框限制中文字节数问题

2013-10-24 17:29 519 查看
一般来说,昵称等用户输入的自定义数据都需要限制一下显示的长度。

NGUI的INPUT输入框限制的是最大的char字符数,char字符数其实就是string的长度,中文算一个,英文也算一个。无法达到限制字节的效果。

如下:





既然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)
{
//delete the final char
mText = mText.Substring(0, mText.Length -1);
while (System.Text.Encoding.Default.GetBytes(mText).Length > maxChars)
{
mText = mText.Substring(0, mText.Length - 1);
}
}
//fix end
http://blog.sina.com.cn/s/blog_5b6cb9500101fabw.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐