Unity进阶课程【一】Input Field 组件的失焦和使用

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调用的基本内容,基本满足日常开发使用。
  • 运行结果如下
    打印结果组件详情
    UI界面

3.输入框失焦问题

  //重点 重点 重点  输入框失焦和聚焦状态设置
  //输入框聚焦设置  解释一下:无需点击输入框,即自动定位至输入框,可直接输入内容
  inputField.ActivateInputField();

  //输入框失焦设置  解释一下:需要重新点击输入框才能输入内容,使输入框失去焦点
  inputField.DeactivateInputField();
  

总结

提示:重点是失焦问题,其实也是最简单的问题,Unity库封装好的方法。

  • 遇到PC端软件点击软件空白处导致输入框失焦的情况可以参考以上方法。
    重点是解决方法,遇到问题要有耐心。

点赞收藏加关注哦~ 蟹蟹

  • 6
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值