unity学习56:旧版legacy和新版TMP文本输入框 InputField学习

目录

[1 旧版文本输入框 legacy InputField](#1 旧版文本输入框 legacy InputField)

[1.1 新建一个文本输入框](#1.1 新建一个文本输入框)

[1.2 InputField 的子物体构成](#1.2 InputField 的子物体构成)

[1.3 input field的的component](#1.3 input field的的component)

[1.4 input Field的属性](#1.4 input Field的属性)

[2 过渡 transition](#2 过渡 transition)

[3 控件导航 navigation](#3 控件导航 navigation)

[4 占位文本 placeholder](#4 占位文本 placeholder)

[5 文本 text](#5 文本 text)

[5.1 文本内容,用户来input](#5.1 文本内容,用户来input)

[5.2 内容类型 content type](#5.2 内容类型 content type)

[5.3 line type](#5.3 line type)

[5.4 光标 caret相关](#5.4 光标 caret相关)

[5.5 其他](#5.5 其他)

[6 相关触发事件](#6 相关触发事件)

[7 代码](#7 代码)

[7.1 UI相关代码必须先引用 UnityEngine.UI](#7.1 UI相关代码必须先引用 UnityEngine.UI)

[7.2 声明 InputField类型的变量,然后在unity里拖动和获取到这个控件](#7.2 声明 InputField类型的变量,然后在unity里拖动和获取到这个控件)

[7.3 然后再 inputField下面的创建新事件,并关联到脚本的对应函数](#7.3 然后再 inputField下面的创建新事件,并关联到脚本的对应函数)

[7.4 测试代码](#7.4 测试代码)

[8 新版TMP InputField](#8 新版TMP InputField)

[8.1 子物体的构成,结构有变换,功能差不多](#8.1 子物体的构成,结构有变换,功能差不多)

[8.2 属性有一些不同,大部分相同](#8.2 属性有一些不同,大部分相同)

[8.3 事件不一样](#8.3 事件不一样)

[9 新版 TMP InputField 代码差别](#9 新版 TMP InputField 代码差别)

[9.1 改变,新包 TMPro](#9.1 改变,新包 TMPro)

[9.2 改变,新类型TMP_InputField](#9.2 改变,新类型TMP_InputField)

[9.3 其他绑定方式类似](#9.3 其他绑定方式类似)

[9.4 代码实测](#9.4 代码实测)


1 旧版文本输入框 legacy InputField

1.1 新建一个文本输入框

1.2 InputField 的子物体构成

主物体/主控件 InputField 下面包含2个文本

  1. 一个是place holder //占位文本
  2. 一个是text //就是用户输入时的显示文本

1.3 input field的的component

  • rect transform
  • canvas render
  • image
  • input Field

1.4 input Field的属性

  • actable 可交互性
  • 如果不可交互,就无法选中了,类纯看的图片

2 过渡 transition

  • 过渡 transition
  • 类前面的button
  • 多个控件之间的导航,类前面的button
  • 没仔细看,以后再说

4 占位文本 placeholder

  • 点击 placeholder 会跳转到子物体placeholder
  • 然后在placeholder 上面修改文本内容

5 文本 text

5.1 文本内容,用户来input

  • 就是用户的文本输入的内容
  • 注意是用户来input
  • 一般这里不应该填写内容,如果填写了就会覆盖 place holder
  • 而且需要用户自己删掉,可能是提示必须填的文本格式?
  • 虽然不填内容,等用户来填写
  • 但是各种对文本的 控制,都可以提前设置
  • 比如
  • character limit 字符数限制

5.2 内容类型 content type

  • 整数int
  • 小数
  • 密码, 会自动屏蔽为***
  • 字母
  • 电邮
  • 等等

5.3 line type

5.4 光标 caret相关

5.5 其他

移动时输入会弹出一个键盘?

6 相关触发事件

  • on value changed
  • on submit
  • on end edit

7 代码

7.1 UI相关代码必须先引用 UnityEngine.UI

  • 开头需要添加
  • using UnityEngine.UI

7.2 声明 InputField类型的变量,然后在unity里拖动和获取到这个控件

  • 脚本中,先声明 public InputField inputField1;
  • 因为这个脚本挂载canvas上面
  • 然后拖动关联到canvas下面的脚本的公共变量上
  • 注意,需要让unity可读到显示,都必须声明为public

7.3 然后再 inputField下面的创建新事件,并关联到脚本的对应函数

  • 然后再 inputField下面的创建新事件 on value changed
  • 把脚本所在的canvas挂上去
  • 从右边找到 脚本,然后找到脚本里的新建的函数 inputTextChanged

7.4 测试代码

cs 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;


public class TestUI : MonoBehaviour
{
    public InputField inputField1;

    // Start is called before the first frame update
    void Start()
    {
        using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;


public class TestUI : MonoBehaviour
{
    public InputField inputField1;

    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }

    // Update is called once per frame
    public void buttonClick()
    {
        Debug.Log("buttonClick");
    }

    public void InputTextChanged()
    {
        Debug.Log("InputTextChanged");
        Debug.Log(inputField1.text);
    }

}

    }

    // Update is called once per frame
    void Update()
    {
        
    }

    // Update is called once per frame
    public void buttonClick()
    {
        Debug.Log("buttonClick");
    }

    public void InputTextChanged()
    {
        Debug.Log("InputTextChanged");
        Debug.Log(inputField1.text);
    }

}

8 新版TMP InputField

8.1 子物体的构成,结构有变换,功能差不多

8.2 属性有一些不同,大部分相同

8.3 事件不一样

  • on value changed
  • on end edit
  • on select
  • on deselect

9 新版 TMP InputField 代码差别

9.1 改变,新包 TMPro

  • using TMPro;
  • 因为TMP使用的包不一样

9.2 改变,新类型TMP_InputField

  • public TMP_InputField inputField2;
  • 文本框的类型,完全不同

9.3 其他绑定方式类似

9.4 代码实测

相关推荐
Thomas_YXQ1 天前
Unity3D 战斗系统架构与设计详解
开发语言·unity·架构·系统架构·unity3d
Nicole Potter1 天前
内存泄漏指什么?常见的内存泄漏有哪些?
开发语言·游戏·unity·面试·c#
Jditinpc1 天前
Unity FBXExport导出的FBX无法在Blender打开
unity·游戏引擎·blender
太妃糖耶2 天前
Unity地形系统
unity·游戏引擎
别偷喝船长的朗姆酒3 天前
【Unity】鱼群效果模拟
unity·游戏引擎
WarPigs3 天前
Unity汽车笔记
笔记·unity·汽车
奔跑的犀牛先生3 天前
unity学习52:UI的最基础组件 rect transform,锚点anchor,支点/轴心点 pivot
unity
奔跑的犀牛先生3 天前
unity学习53:UI的子容器:面板panel
unity
larito4 天前
HybridCLR+Adressable+Springboot热更
unity·热更