NGUI UIInput屏蔽特殊字符(允许输入汉字)

原创 2013年10月25日 19:35:23

2014/12/29更新:

现在的新版本已经找不到UIInputValidator这个脚本了,官方直接把功能集成到了UIInput里面,大家可以编辑UIInput达到相同的目的,对应修改UIInput的Validation属性即可。

-----------------------------------------------------------------------------------------------------------------------

可以用组件UIInputValidator达到预期效果,不过为了支持汉字输入,需做一定的修改

修改UIInpurtValidator的代码如下:


首先是在枚举Validation里添加一种过滤规则

public enum Validation
{
<span style="white-space:pre">	</span>None,
	Integer,
	Float,
	Alphanumeric,
	Username,
	Name,
	<span style="color:#ff0000">Chinese,//这个是新添加的</span>
}

然后修改Validate方法如下

char Validate (string text, char ch)
{
	// Validation is disabled
	if (logic == Validation.None || !enabled) return ch;
	<span style="color:#ff0000">if (logic == Validation.Chinese){
		if (ch>=0x4e00 && ch<=0x9fa5) return ch;//这个主要是汉字的范围
		if (ch >= 'A' && ch <= 'Z') return ch;
		if (ch >= 'a' && ch <= 'z') return ch;
		if (ch >= '0' && ch <= '9') return ch;
	}
	else</span> if (logic == Validation.Integer)
	{
		// Integer number validation
		if (ch >= '0' && ch <= '9') return ch;
		if (ch == '-' && text.Length == 0) return ch;
	}
	else if (logic == Validation.Float)
	{
		// Floating-point number
		if (ch >= '0' && ch <= '9') return ch;
		if (ch == '-' && text.Length == 0) return ch;
		if (ch == '.' && !text.Contains(".")) return ch;
	}
	else if (logic == Validation.Alphanumeric)
	{
		// All alphanumeric characters
		if (ch >= 'A' && ch <= 'Z') return ch;
		if (ch >= 'a' && ch <= 'z') return ch;
		if (ch >= '0' && ch <= '9') return ch;
	}
	else if (logic == Validation.Username)
	{
		// Lowercase and numbers
		if (ch >= 'A' && ch <= 'Z') return (char)(ch - 'A' + 'a');
		if (ch >= 'a' && ch <= 'z') return ch;
		if (ch >= '0' && ch <= '9') return ch;
	}
	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');
			return ch;
		}
		else if (ch >= 'A' && ch <= 'Z')
		{
			// Uppercase letters are only allowed after spaces (and apostrophes)
			if (lastChar != ' ' && lastChar != '\'') return (char)(ch - 'A' + 'a');
			return ch;
		}
		else if (ch == '\'')
		{
			// Don't allow more than one apostrophe
			if (lastChar != ' ' && lastChar != '\'' && !text.Contains("'")) return ch;
		}
		else if (ch == ' ')
		{
			// Don't allow more than one space in a row
			if (lastChar != ' ' && lastChar != '\'') return ch;
		}
	}
	return (char)0;
}

红色部分为新添加的代码,这样子就可以在u3d编辑器里设置logic的值为Chinese就可以了
如果有需求需要允许一些特殊字符,直接修改Validate方法就可以了




NGUI的Input输入框限制中文字节数问题

转载自: 一般来说,昵称等用户输入的自定义数据都需要限制一下显示的长度。 NGUI的INPUT输入框限制的是最大的char字符数,char字符数其实就是string的长度,...
  • yuxikuo_1
  • yuxikuo_1
  • 2015年04月18日 11:55
  • 762

ngui UIInput输入汉字的那些坑

项目使用ngui,制作角色创建时,及聊天系统时,难免会输入中文字符。结果发现了很奇妙的情况,即限制的长度6(角色名长度)时,在editor中只能输入三个汉字,但是直接设置值可以显示6个汉字。查了下,发...
  • qq_37655053
  • qq_37655053
  • 2017年08月29日 20:46
  • 386

Unity3D NGUI UIInput制作输入框屏蔽特殊字符(只允许输入正整数)

1、首先看看使用NGUI插件创建一个简单输入文本框效果:。 2、这个简单的输入文本框需要一个label标签作为显示,一个背景图片以及输入UIInput脚本。我们看看unity的输入文本框的节点图 ...
  • wcluojiji
  • wcluojiji
  • 2015年03月03日 14:21
  • 3938

NGUI官网示例12 –Chat Window(聊天对话框,中文输入和显示)

聊天对话框是网络游戏中经常会用到的GUI之一,它可以通过用户的键盘输入来获取输入信息并发送到其他的游戏客户端中。当然,聊天对话框的用途还有很多。在NGUI中,也为我们创建聊天对话框提供了方便,如图所示...
  • lihui061119
  • lihui061119
  • 2014年09月29日 23:38
  • 927

Unity3D NGUI UIInput中文输入,插入文本时后面文本被删除问题

Unity的一个项目,这两天测试报了一个BUG,在电脑上输入中文时,如果插入文本会,后面的文本会被删除,经测试后发现NGUI Demo也有这个问题,估计是因为NGUI开发人员没有华人吧!改了下UIIn...
  • c5138891
  • c5138891
  • 2017年05月27日 10:22
  • 1103

ASCII表和对应的转义字符

ASCII码表完整版 ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符 ...
  • AnYuanLzh
  • AnYuanLzh
  • 2013年10月15日 11:01
  • 1665

Unity3d NGUI的使用(六)(UIInput&多个UICheckBox单选的使用)

UIInput:用户输入框,可以输入格化的内容,如密码,用户名 UICheckBox:勾选框 UIInput:在Widget Tool里选择UIInput然后选择一个背景图片,...
  • a351945755
  • a351945755
  • 2014年06月25日 14:01
  • 12320

NGUI 3.5教程(七)Input 输入框

 写在前面:        本文将创建一个基本的Button。并且编写脚本,响应点击事件。     欢迎大家纠错、拍砖!原创很辛苦,如有转载,请注明出处。...
  • chenggong2dm
  • chenggong2dm
  • 2014年08月01日 14:47
  • 25964

NGUI中Input制作方式

1、创建控件 添加3个组件: (1)UIInput (2)UISprite (3)BoxCollider 2、设置Input的Label属性 3、设置最终显示的文字 4、重点...
  • wodownload2
  • wodownload2
  • 2016年08月05日 14:42
  • 1067

获取NGUI的输入框内容的方法

研究了一下NGUI如何获取输入框内容的方法,简单总结如下 NGUI获取UIInput输入框输入内容的方法,脚本如下: using UnityEngine; using System.Collecti...
  • a6627651
  • a6627651
  • 2014年12月28日 09:35
  • 5539
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:NGUI UIInput屏蔽特殊字符(允许输入汉字)
举报原因:
原因补充:

(最多只允许输入30个字)