Unity 之UGUI InputField 组件的使用

404 阅读2分钟

「这是我参与2022首次更文挑战的第16天,活动详情查看:2022首次更文挑战

Unity InputField 组件的面板

常用属性

常用属性面板简析: 面板 Interactable :当前输入框是否可用

Text Component:此输入域的文本显示组件,任何带有Text组件的物体。

Text(文本):此输入域的初始值。

Character Limit(字符数量限制):限定此输入域最大输入的字符数,0为不限制。

Content Type(内容类型):限定此输入域的内容类型,包括数字、密码等,常用的类型如下:

  • Standard(标准类型):什么字符都能输入,只要是当前字体支持的。
  • Integer Number(整数类型):只能输入一个整数。
  • Decimal Number(十进制数):能输入整数或小数。
  • Alpha numeric(文字和数字):能输入数字和字母。
  • Name(姓名类型):能输入英文及其他文字,当输入英文时自动姓名化(首字母大写)。
  • Password(密码类型):输入的字符隐藏为星号。

Line Type(换行方式):当输入的内容超过输入域边界时:

  • single Line(单一行):超过边界也不换行,继续延伸此行,输入域中的内容只有一行;

  • multi Line Submit(多行):超过边界则换行,输入域中内容有多行;

  • multi Line Newline(多行):超过边界则新建换行,输入域中内容有多行。

Placeholder(位置标示):此输入域的输入位控制符,任何带有Text组件的物体。

Caret blink rate(光标闪烁速度):标示输入光标的闪烁速度。

Hide mobile input : 手机隐藏输入

On Value Changed:值改变时触发消息。

End Edit:结束编辑时触发消息。


代码简例:

	public InputField match_input;
    private string match_JiangLiNum;
    void Init() //注册监听
    {
        match_input.onValueChanged.AddListener(Input_OnChanged);
        //控制只可以输入数字
        match_input.contentType = InputField.ContentType.IntegerNumber;
        match_input.onEndEdit.AddListener(Input_End);
    }
    
    public void Input_OnChanged(string context)  
    {
       
    }
    
    public void Input_End() //输入数字完成后显示 
    {
        match_input.contentType = InputField.ContentType.Standard;

        Debug.Log(match_input.text);
        if (match_input.text.Length > 5)//限制长度
        {
            match_input.text = match_input.text.Substring(0, 5);
        }
        //避免带入上次的文字显示
        string str = GetNumberForString(match_input.text);
        match_JiangLiNum = (str != "" ? str : "1");
        match_input.text = "前" + match_JiangLiNum + "名";
    }

    /// <summary>
    /// 获取字符串中的数字
    /// </summary>
    /// <param name="str"></param>
    /// <returns></returns>
    public string GetNumberForString(string str)
    {
        string num = "";
        char[] ch = new char[str.Length];
        ch = str.ToCharArray();
        for (int i = 0; i < str.Length; i++)
        {
            if (ch[i] >= 48 && ch[i] <= 57)
                num += ch[i];
        }
        return num;
    }