Unity组件讲解 Input Field
咱就是说,Unity组件这么多,有多少是我们敢很自信的讲出它的所有用法和功能的,呦呦~开始思考了,书到用时方恨少,有些时候用到是时候,真是急得上网查了个遍,最后还没找到。害。。。
提示:内容纯个人编写,欢迎评论点赞,来指正我。
文章目录
前言
本篇内容主要讲Unity组件之 InputField 输入框简单用法和遇到的一些坑,以及一些平常不注意到的功能。
下面让我们出发吧 ------------>----------------->
一、Input Field 是什么?
Input Field 是Unity 3D的一个组件,该组件主要是为用户提供输入框,可自主输入内容。
二、Input Field 基础功能介绍
1.组件功能
- 默认组件状态就是酱紫的,我没动任何东西哦,unity版本是2019.4.12f1 开始基础功能介绍。
– Interactable : 表示组件是否禁用,默认勾选,代表不禁用。取消勾选,代表禁用该组件
–Transititon :表示该组件的点击状态切换,包括颜色、图片、动画切换。类似Button组件
–Navigation、Text Component、Text :这些跳过,默认设置即可
–Character Limit :表示限制输入的字数,默认为0,代表字数不限
–Content Type :表示输入内容的类型,是一个限制型功能
===Standard :默认不限制输入任何字符
=== Integer Number :表示只能输入阿拉伯数字整数
===Decimal Number :表示可以输入小数
===Alphanumeric :表示只能输入字母和阿拉伯数字
===Name :表示可以输入字母和汉字,可用作名字
===Email Address :表示只能输入网址和符号,例如www.abcd.com
===Password :表示输入的是带 * 的密码,输入内容类型不限
===Pin :表示表示输入的是带 * 的密码,输入内容只能是阿拉伯数字
===Custom :表示自定义输入类型和输入设备类型,不做多介绍了
–Caret Blink Rate :表示输入停止线的闪烁速度,从左到右,速度从慢到快
–Caret Width :表示输入停止线的线条粗细程度,从左到右,线条从细到粗
–Custom Caret Color :表示自定义停止线的颜色,勾选后可自己定义
===Caret Color :表示停止线的颜色
===Selection Color :表示选中输入的内容时,内容的颜色
–Hide Mobile Input :表示隐藏手机输入
–Read Only :表示禁止输入,只能读取,不能输入内容
2.基础 API 使用
代码如下:
using UnityEngine;
using UnityEngine.UI;
public class UiManager : MonoBehaviour
{
public InputField inputField;
private void Start()
{
//输入框内容 ===> Get/Set(可读/可写)
Debug.Log("读取输入框内容:" + inputField.text);
inputField.text = "小姐姐";
//输入框是否禁用状态 ===> Get/Set
Debug.Log("读取是否禁用状态:" + inputField.interactable);
inputField.interactable = true;
//输入框是否正在输入状态 建议放到 Update里效果比较明显 ===> Get
Debug.Log("读取是否正在输入状态:" + inputField.isFocused);
//输入框字数限制 ===> Get/Set
Debug.Log("读取输入框字数限制值:" + inputField.characterLimit);
inputField.characterLimit = 5;
//输入框内容的类型 ===> Get/Set
Debug.Log("读取输入内容类型:" + inputField.contentType);
inputField.contentType = InputField.ContentType.Standard;
//输入框自定义停止线选项功能 ===> Get/Set
Debug.Log("读取自定义停止线状态:" + inputField.customCaretColor);
inputField.customCaretColor = true;
//输入框内停止线的颜色 ===> Get/Set 使用该项功能时需勾选 Custom Caret Color勾选框
Debug.Log("读取停止线的颜色值:" + inputField.caretColor);
inputField.caretColor = Color.red;
//输入框选中内容的颜色 ===> Get/Set 使用该项功能时需勾选 Custom Caret Color勾选框
Debug.Log("读取输入框选中内容的颜色值:" + inputField.selectionColor);
inputField.selectionColor = Color.blue;
//输入框内停止线的位置 ===> Get/Set 建议放到 Update里效果比较明显 数值为输入内容的位置下标 例如第一个字符 数值为0
Debug.Log("读取停止线的位置下标:" + inputField.caretPosition);
inputField.caretPosition = 2;
//输入框停止线闪烁速度 ===> Get/Set
Debug.Log("读取停止线闪烁速度数值:" + inputField.caretBlinkRate);
inputField.caretBlinkRate = 2;
//输入框停止线的宽度 ===> Get/Set
Debug.Log("读取停止线宽度数值:" + inputField.caretWidth);
inputField.caretWidth = 5;
//输入框数值变化回调方法添加 在输入时或删除时调用
inputField.onValueChanged.AddListener(delegate {
OnValueChanged(); });
//输入框输入结束回调方法添加 在确认时或失焦时调用
inputField.onEndEdit.AddListener(delegate {
OnEndEdit(); });
//重点 重点 重点 输入框失焦和聚焦状态设置
//输入框聚焦设置 解释一下:无需点击输入框,即自动定位至输入框,可直接输入内容
inputField.ActivateInputField();
//输入框失焦设置 解释一下:需要重新点击输入框才能输入内容,使输入框失去焦点
inputField.DeactivateInputField();
}
private static void OnValueChanged()
{
Debug.Log("输入框数值变化了");
}
private static void OnEndEdit()
{
Debug.Log("输入完毕");
}
}
- 以上为基础API调用的基本内容,基本满足日常开发使用。
- 运行结果如下
3.输入框失焦问题
//重点 重点 重点 输入框失焦和聚焦状态设置
//输入框聚焦设置 解释一下:无需点击输入框,即自动定位至输入框,可直接输入内容
inputField.ActivateInputField();
//输入框失焦设置 解释一下:需要重新点击输入框才能输入内容,使输入框失去焦点
inputField.DeactivateInputField();
总结
提示:重点是失焦问题,其实也是最简单的问题,Unity库封装好的方法。
- 遇到PC端软件点击软件空白处导致输入框失焦的情况可以参考以上方法。
重点是解决方法,遇到问题要有耐心。
点赞收藏加关注哦~ 蟹蟹