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 代码实测

相关推荐
与火星的孩子对话3 小时前
Unity3D开发AI桌面精灵/宠物系列 【三】 语音识别 ASR 技术、语音转文本多平台 - 支持科大讯飞、百度等 C# 开发
人工智能·unity·c#·游戏引擎·语音识别·宠物
向宇it3 小时前
【零基础入门unity游戏开发——2D篇】2D 游戏场景地形编辑器——TileMap的使用介绍
开发语言·游戏·unity·c#·编辑器·游戏引擎
牙膏上的小苏打233319 小时前
Unity Surround开关后导致获取主显示器分辨率错误
unity·主屏幕
Unity大海21 小时前
诠视科技Unity SDK开发环境配置、项目设置、apk打包。
科技·unity·游戏引擎
浅陌sss1 天前
Unity中 粒子系统使用整理(一)
unity·游戏引擎
维度攻城狮1 天前
实现在Unity3D中仿真汽车,而且还能使用ros2控制
python·unity·docker·汽车·ros2·rviz2
为你写首诗ge1 天前
【Unity网络编程知识】FTP学习
网络·unity
神码编程2 天前
【Unity】 HTFramework框架(六十四)SaveDataRuntime运行时保存组件参数、预制体
unity·编辑器·游戏引擎
菲fay2 天前
Unity 单例模式写法
unity·单例模式
火一线2 天前
【Framework-Client系列】UIGenerate介绍
游戏·unity