怎么让NGUI的INPUTinput中只能输入数字字

4220人阅读
Unity3d(7)
现在的新版本已经找不到UIInputValidator这个脚本了,官方直接把功能集成到了UIInput里面,大家可以编辑UIInput达到相同的目的,对应修改UIInput的Validation属性即可。
-----------------------------------------------------------------------------------------------------------------------
可以用组件UIInputValidator达到预期效果,不过为了支持汉字输入,需做一定的修改
修改UIInpurtValidator的代码如下:
首先是在枚举Validation里添加一种过滤规则
public enum Validation
&span style=&white-space:pre&& &/span&None,
Alphanumeric,
&span style=&color:#ff0000&&Chinese,//这个是新添加的&/span&
然后修改Validate方法如下
char Validate (string text, char ch)
// Validation is disabled
if (logic == Validation.None || !enabled)
&span style=&color:#ff0000&&if (logic == Validation.Chinese){
if (ch&=0x4e00 && ch&=0x9fa5)//这个主要是汉字的范围
if (ch &= 'A' && ch &= 'Z')
if (ch &= 'a' && ch &= 'z')
if (ch &= '0' && ch &= '9')
else&/span& if (logic == Validation.Integer)
// Integer number validation
if (ch &= '0' && ch &= '9')
if (ch == '-' && text.Length == 0)
else if (logic == Validation.Float)
// Floating-point number
if (ch &= '0' && ch &= '9')
if (ch == '-' && text.Length == 0)
if (ch == '.' && !text.Contains(&.&))
else if (logic == Validation.Alphanumeric)
// All alphanumeric characters
if (ch &= 'A' && ch &= 'Z')
if (ch &= 'a' && ch &= 'z')
if (ch &= '0' && ch &= '9')
else if (logic == Validation.Username)
// Lowercase and numbers
if (ch &= 'A' && ch &= 'Z') return (char)(ch - 'A' + 'a');
if (ch &= 'a' && ch &= 'z')
if (ch &= '0' && ch &= '9')
else if (logic == Validation.Name)
char lastChar = (text.Length & 0) ? text[text.Length - 1] : ' ';
if (ch &= 'a' && ch &= 'z')
// Space followed by a letter -- make sure it's capitalized
if (lastChar == ' ') return (char)(ch - 'a' + 'A');
else if (ch &= 'A' && ch &= 'Z')
// Uppercase letters are only allowed after spaces (and apostrophes)
if (lastChar != ' ' && lastChar != '\'') return (char)(ch - 'A' + 'a');
else if (ch == '\'')
// Don't allow more than one apostrophe
if (lastChar != ' ' && lastChar != '\'' && !text.Contains(&'&))
else if (ch == ' ')
// Don't allow more than one space in a row
if (lastChar != ' ' && lastChar != '\'')
return (char)0;
红色部分为新添加的代码,这样子就可以在u3d编辑器里设置logic的值为Chinese就可以了
如果有需求需要允许一些特殊字符,直接修改Validate方法就可以了
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:34833次
排名:千里之外
原创:11篇
评论:12条
(1)(1)(1)(2)(1)(1)(4)}

我要回帖

更多关于 input框只能输入数字 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信