当前位置: 首页 > news >正文

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

目录

1 旧版文本输入框 legacy InputField 

1.1 新建一个文本输入框

1.2 InputField 的子物体构成

1.3 input field的的component

1.4 input Field的属性

2 过渡 transition

3 控件导航 navigation

4 占位文本 placeholder

5 文本 text

5.1 文本内容,用户来input

5.2 内容类型 content type

5.3 line type 

5.4  光标 caret相关

5.5 其他

6 相关触发事件

7 代码

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

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

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

7.4 测试代码

8 新版TMP InputField

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

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

8.3 事件不一样

9 新版 TMP InputField 代码差别

9.1 改变,新包 TMPro

9.2 改变,新类型TMP_InputField

9.3 其他绑定方式类似

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

3 控件导航 navigation

  • 多个控件之间的导航,类前面的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 测试代码

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 updatevoid 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 updatevoid Start(){}// Update is called once per framevoid Update(){}// Update is called once per framepublic void buttonClick(){Debug.Log("buttonClick");}public void InputTextChanged(){Debug.Log("InputTextChanged");Debug.Log(inputField1.text);}}}// Update is called once per framevoid Update(){}// Update is called once per framepublic 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 代码实测

http://www.lryc.cn/news/545023.html

相关文章:

  • 32位,算Cache地址
  • C++蓝桥杯基础篇(六)
  • React 常见面试题及答案
  • 和鲸科技推出人工智能通识课程解决方案,助力AI人才培养
  • 免费使用 DeepSeek API 教程及资源汇总
  • 网络安全-使用DeepSeek来获取sqlmap的攻击payload
  • 网络原理--TCP/IP(2)
  • Ragflow与Dify之我见:AI应用开发领域的开源框架对比分析
  • 文件上传漏洞绕过WAF
  • [含文档+PPT+源码等]精品基于Python实现的vue3+Django计算机课程资源平台
  • Qt 开源音视频框架模块之QtAV播放器实践
  • 【前端】XML,XPATH,与HTML的关系
  • ubuntu服务器安装VASP.6.4.3
  • 市场加速下跌,但监管「坚冰」正在消融
  • 7.2 - 定时器之计算脉冲宽度实验
  • Imagination DXTP GPU IP:加速游戏AI应用,全天候畅玩无阻
  • 关于流水线的理解
  • 采样算法二:去噪扩散隐式模型(DDIM)采样算法详解教程
  • 北京大学DeepSeek提示词工程与落地场景(PDF无套路免费下载)
  • Hutool - POI:让 Excel 与 Word 操作变得轻而易举
  • IDEAPyCharm安装ProxyAI(CodeGPT)插件连接DeepSeek-R1教程
  • Iceberg Catalog
  • 2025年2月个人工作生活总结
  • vscode java环境中文乱码的问题
  • Java数据结构第十五期:走进二叉树的奇妙世界(四)
  • 【MySQL】CAST()在MySQL中的用法以及其他常用的数据类型转换函数
  • 使用Truffle、Ganache、MetaMask、Vue+Web3完成的一个简单区块链项目
  • 初出茅庐的小李博客之按键驱动库使用
  • 如何调试Linux内核?
  • ECharts组件封装教程:Vue3中的实践与探索