一、UIInput是什么
UIInput(用户界面输入)通常指的是用于在用户界面中接收用户输入的元素。在Unity中,UIInput通常以Input Field的形式存在,它允许用户在游戏中输入文本或数字等信息。
二、UIInput的应用
- 文本输入: UIInput主要用于接收用户的文本输入。用户可以在输入字段中键入文本,这些文本通常用于游戏中的各种目的,比如玩家名称、密码、聊天消息等。
- 数字输入: 除了文本,UIInput也可以用于接收数字输入。您可以配置输入字段以仅接受数字,并可以设置输入字段的最小和最大值。
- 多行文本: UIInput可以配置为允许多行文本输入,这对于用户输入长文本或多行消息很有用。
- 密码输入: UIInput可以配置为接收密码输入。在这种情况下,用户输入的文本将被隐藏,通常以“*”或其他字符代替。
- 输入验证: 您可以通过脚本编程来验证用户的输入。这可以包括验证文本是否符合特定格式、是否是有效的电子邮件地址等。
- 事件处理: UIInput可以发送事件,以便在用户输入时触发相应的操作。例如,在用户完成输入时触发事件,可以执行保存数据或处理文本的操作。
- 自定义样式: 您可以在Unity的Inspector面板中调整UIInput的外观,包括背景、边框、字体、文本颜色等。这使得您可以根据游戏的需求自定义输入字段的外观。
三、UIInput的使用以及其各项属性
1.添加脚本组件
单击笔记(二)中提到的Add Component,给Label物体添加Input Field
2.代码声明
在代码中表现为
public UIInput inputLabel;
3.各项属性
Label(标签): InputField的文本标签,显示在InputField之前,用于标识输入字段的用途或内容。
Starting Value(初始值): InputField的初始值,即在用户输入之前显示在输入字段中的默认文本或数字。
Saved As(保存为): 这是指定输入字段的值将被保存为哪个变量的属性。在使用该InputField获取用户输入后,可以将输入的值保存到指定的变量中。
Active Text Color(活动文本颜色): 当输入字段处于活动状态(用户正在编辑文本时)时,文本显示的颜色。活动状态指的是用户正在编辑该输入字段,光标正在输入文本时的状态。活动文本颜色是用户输入时看到的文本的颜色。
Inactive Color(非活动颜色): 当输入字段处于非活动状态(用户不在编辑该字段时)时,文本显示的颜色。非活动状态指的是用户不在编辑该输入字段时的状态。非活动颜色是当输入字段未被激活时显示的文本颜色。
Caret Color(光标颜色): 光标是指示用户当前正在编辑的文本位置的垂直竖线或闪烁的标志。Caret Color是光标的颜色,它指定了光标在文本中的位置,并且通常与文本颜色有所区别,以便用户能够清晰地看到光标的位置。
Select Color(选中颜色): 当InputField被选中(获取焦点)时的背景颜色。通常用于指示用户当前正在输入的字段。
Input Type(输入类型): 指定输入字段接受的类型,比如文本、整数、浮点数等。不同的输入类型可以限制用户输入的内容。
validation(验证规则): 指定用户输入的验证规则。通过设置验证规则,您可以确保用户输入的内容符合特定的格式或条件。这有助于确保数据的完整性和准确性,并提供更好的用户体验。
- None(无): 不执行任何验证,允许用户输入任何类型的文本。
- Integer(整数): 验证用户输入是否为整数。如果输入不是整数,则会显示错误。
- Decimal(浮点数): 验证用户输入是否为浮点数(即带有小数点的数字)。如果输入不是浮点数,则会显示错误。
- Alphanumeric(字母数字): 验证用户输入是否只包含字母和数字。如果输入包含其他字符,则会显示错误。
- Email Address(电子邮件地址): 验证用户输入是否符合电子邮件地址的格式。如果输入不是有效的电子邮件地址,则会显示错误。
- Custom(自定义): 可以编写自定义脚本来定义特定的验证规则。
Keyboard Type(键盘类型): 这是指定在移动设备上打开键盘时的键盘类型,例如默认键盘、数字键盘、电子邮件键盘等。这可以根据输入字段的内容类型进行调整。
Validation(验证): 这是指定输入字段中文本的验证规则。例如,可以验证文本是否是整数、浮点数、电子邮件地址等。
Character Limit(字符限制): 这是指定输入字段允许的最大字符数。超过此限制的字符将无法输入。
4.代码细节
以int为例
/// <summary>
///UIInput.cs
/// </summary>
public class UIInput : MonoBehaviour
{
//UIInput中注册有onChange事件
public List<EventDelegate> onChange = new List<EventDelegate>();
}
//监听inputLabel的onChange动作
EventDelegate.Add(this.inputLabel.onChange, OnLabelUpdate);
private void OnLabelUpdate()
{
int num;
string inputString = inputLabel.value;//获取输入的string值
int.TryParse(inputString, out num);//更安全
string formatedString = inputString;
if (string.IsNullOrEmpty(inputString))
{
formatedString = "0";
}
num = Mathf.Clamp(num, 0, _maxSoldierSetoutCount);//这里限制了num的范围
formatedString = num.ToString();
if (!formatedString.Equals(inputString))
{
inputLabel.value = formatedString;
}
_currentUseSoldierCount = num;//当前需要显示的数值
CheckReduceAndAdd();//刷新页面
}
版权归原作者 差点意思的鸭鸭 所有, 如有侵权,请联系我们删除。