InputFiled组件(输入框)
Text Component(显示内容):显示输入内容的Text的组件
Text(输入内容):输入的文本内容
Character Limit:字符数量限值,0是无限制,中英文字符长度相同
Content Type:输入内容限值
----Standard:标准类型,什么字符都行
----Integer Number:整数类型
----Decimal Number:整数或小数类型
----Alphanumeric:字母和数字
----Name:首字母大写
----Email Address:@和.
----Password:字母和数字,星号隐藏
Line Type
----Single Line:单行,不允许换行,只有一行
----Multi Line Submit:多行,当一行不能装下所有的字符时,自动换行,不允许手动回车换行
----Multi Line Newline:多行,当一行不能装下所有的字符时,自动换行,允许手动回车换行
Placeholder:默认显示的内容Text组件(当输入内容为空时,显示的内容)
Caret Blink Rate:光标的闪烁速度
Caret Width:光标的宽度
Custom Caret Color:自定义光标的颜色
Selection Color:选中文本的背景颜色
Hide Mobile Input:隐藏手机的虚拟键盘(移动端)
Read Only:只读
自制输入框

文本内容的左右边距缩进

输入内容Text组件报错

去掉Text组件的富文本选项

OnValueChanged,当输入内容Text值改变的时候,执行里边存储的所有的方法。
OnEndEdit:当输入结束的时候执行(按下回车键或光标失去焦点的时候)

两个输入框的TAB切换

代码操作
常用
input.text//获取或者修改文本的内容
input.textComponent
input.contentType//改变文本类型
input.readOnly
input.ForceLabelUpdate();//强制更新显示内容,在改变完文本类型的情况下最好强制更新一次
input.isFocused//检查输入框是否锁定
input.Select();//选择输入框,默认只能选定一个输入框
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class UGUI_InputField : MonoBehaviour {
public InputField[] inputs;
private int count = ;
// Use this for initialization
void Start () {
//获取或者修改文本的内容
inputs[].text = "小明";
//使用代码注册事件
inputs[].onValueChanged.AddListener(OnValueChanged);
//执行onValueChanged里的所有的方法
inputs[].onValueChanged.Invoke("");
inputs[].onEndEdit.AddListener(OnEndEdit);
inputs[].Select();
} // Update is called once per frame
void Update () {
if (Input.GetKeyDown(KeyCode.Alpha1))
{
//改变文本类型
inputs[].contentType = InputField.ContentType.Password;
//强制更新显示内容,在改变完文本类型的情况下最好强制更新一次
inputs[].ForceLabelUpdate();
}
else if (Input.GetKeyDown(KeyCode.Alpha2))
{
//改变文本类型
inputs[].contentType = InputField.ContentType.Standard;
inputs[].ForceLabelUpdate();
}
if (Input.GetKeyDown(KeyCode.Tab))
{
//inputs[0].isFocused 是否是锁定的
if (inputs[].isFocused)
{
inputs[].Select();//选择
}
else if(inputs[].isFocused)
{
inputs[].Select();
}
else if (inputs[].isFocused)
{
inputs[].Select();
}
}
if (Input.GetKeyDown(KeyCode.Return))
{
count++;
inputs[count % inputs.Length].Select();
}
}
public void OnValueChanged(string str)
{
Debug.Log("OnValueChanged:" + str);
}
public void OnEndEdit(string str)
{
Debug.Log("OnEndEdit:" + str);
}
}
Dropdown组件(下拉菜单)
Dropdown(下拉菜单)
Template : 下拉的模板
Caption Text:当前选择的选项显示的文本组件Text
Caption Image:当前选择的选项显示的Sprite的图片Image
Item Text:模板中每个元素的Text组件
Item Image:模板中每个元素的Image组件
Value:当前选择选项的索引
Options:选项内容

代码操作

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class UGUI_Dropdown : MonoBehaviour {
public Dropdown drop;
private void Awake()
{
drop.onValueChanged.AddListener(Test);
}
// Use this for initialization
void Start () {
//清空所有的选项
drop.options.Clear();
//drop.ClearOptions();
//选项的索引
drop.value = ;
//首先先实例化一个类对象
Dropdown.OptionData data1 = new Dropdown.OptionData("小明");
//把类对象添加到Options中
drop.options.Add(data1);
//第二种添加方式
List<string> list = new List<string>();
list.Add("如花");
//有三个重载的方法,自己酌情选择
drop.AddOptions(list);
} // Update is called once per frame
void Update () { }
public void Test(int value)
{
Debug.Log("你选择了" + value);
}
}

综合练习-登录界面

背景图尺寸1620X720,画布缩放设置1280X720(选第2项)

Shift+拖动:原比例缩放
代码操作:
登录逻辑:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class UGUI_LoginUI : MonoBehaviour {
public GameObject logupObj;
private Button loginButton;
private Button logupButton;
private InputField usernameInput;
private InputField passwordInput;
private Toggle passwordToggle;
private Text errorText;
//暂时使用静态的两个变量存储用户民和密码
public static string user = "admin";
public static string password = "";
private void Awake()
{
loginButton = transform.Find("LoginButton").GetComponent<Button>();
logupButton = transform.Find("LogupButton").GetComponent<Button>();
usernameInput = transform.Find("User").GetComponent<InputField>();
passwordInput = transform.Find("Password").GetComponent<InputField>();
passwordToggle = transform.Find("PasswordToggle").GetComponent<Toggle>();
errorText = transform.Find("ErrorText").GetComponent<Text>();
usernameInput.onValueChanged.AddListener(UserOrPwdValueChange);
passwordInput.onValueChanged.AddListener(UserOrPwdValueChange);
loginButton.onClick.AddListener(LoginButtonClick);
logupButton.onClick.AddListener(RegisterButtonClick);
passwordToggle.onValueChanged.AddListener(ShowPwdToggleClick);
}
// Use this for initialization
void Start () { }
private void OnEnable()
{
errorText.enabled = false;
usernameInput.text = "";
passwordInput.text = "";
}
// Update is called once per frame
void Update () {
if (Input.GetKeyDown(KeyCode.Tab))
{
if (usernameInput.isFocused)
{
passwordInput.Select();
}
else if (passwordInput.isFocused)
{
usernameInput.Select();
}
}
}
//当用户名或密码值发生改变时的事件,因为内部逻辑是相同的,所以使用了一个方法
void UserOrPwdValueChange(string value)
{
//当输入内容改变的时候,判断你的错误提示是否显示,如果显示让他消失
if (errorText.enabled)
{
errorText.enabled = false;
}
}
//登录按钮事件
void LoginButtonClick()
{
//先判断用户名密码是否为空
if (usernameInput.text == null || usernameInput.text == "")
{
errorText.text = "请输入用户名!";
errorText.enabled = true;
}
else if (passwordInput.text == null || passwordInput.text == "")
{
errorText.text = "请输入密码!";
errorText.enabled = true;
}
else
{
if (usernameInput.text == user && passwordInput.text == password)
{
errorText.text = "登录成功";//暂时作为提示处理
errorText.enabled = true;
}
else
{
//当用户名密码错误时,清空你的输入框
usernameInput.text = "";
passwordInput.text = "";
errorText.text = "用户名密码错误";//暂时作为提示处理
errorText.enabled = true;
}
}
}
//注册按钮事件
void RegisterButtonClick()
{
logupObj.SetActive(true);
gameObject.SetActive(false);
}
//显示密码的事件
void ShowPwdToggleClick(bool isOn)
{
if (isOn)//显示密码
{
passwordInput.contentType = InputField.ContentType.Standard;
}
else
{
passwordInput.contentType = InputField.ContentType.Password;
}
passwordInput.ForceLabelUpdate();
}
}

注册逻辑:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class UGUI_LogupUI : MonoBehaviour {
public GameObject loginObj;
private Button returnButton;
private Button submitButton;
private InputField usernameInput;
private InputField pwd1Input;
private InputField pwd2Input;
private Text errorText;
void Awake()
{
returnButton = transform.Find("ReturnButton").GetComponent<Button>();
submitButton = transform.Find("LogupButton").GetComponent<Button>();
usernameInput = transform.Find("User").GetComponent<InputField>();
pwd1Input = transform.Find("Password").GetComponent<InputField>();
pwd2Input = transform.Find("PasswordAgain").GetComponent<InputField>();
errorText = transform.Find("ErrorText").GetComponent<Text>();
returnButton.onClick.AddListener(ReturnButtonClick);
submitButton.onClick.AddListener(SubmitButtonClick);
pwd1Input.onValueChanged.AddListener(PwdValueChange);
pwd2Input.onValueChanged.AddListener(PwdValueChange);
usernameInput.onValueChanged.AddListener(PwdValueChange);
}
// Use this for initialization
void Start () { }
private void OnEnable()
{
//每次进入注册界面需要初始化,错误提示去掉,所有的输入框重置
errorText.enabled = false;
usernameInput.text = "";
pwd1Input.text = "";
pwd2Input.text = "";
}
// Update is called once per frame
void Update () { }
//只要密码改不了,就需要判断错误提示是否显示,如果显示需要给隐藏
void PwdValueChange(string value)
{
if (errorText.enabled)
{
errorText.enabled = false;
}
}
//确定按钮事件
void SubmitButtonClick()
{
if (usernameInput.text == null || usernameInput.text == "")
{
errorText.text = "请输入用户名";
errorText.enabled = true;
}
else if (pwd1Input.text == null || pwd1Input.text == "")
{
errorText.text = "请输入密码";
errorText.enabled = true;
}
else if (pwd2Input.text == null || pwd2Input.text == "")
{
errorText.text = "请确认密码";
errorText.enabled = true;
}
else
{
//所有Input都有内容的情况下,首先判断两次密码是否一致
if (pwd1Input.text == pwd2Input.text)
{
UGUI_LoginUI.user = usernameInput.text;
UGUI_LoginUI.password = pwd1Input.text;
ReturnButtonClick();//直接跳回登录界面
}
else
{
errorText.text = "两次密码不一致!";
errorText.enabled = true;
}
}
}
void ReturnButtonClick()
{
loginObj.SetActive(true);
gameObject.SetActive(false);
}
}

Unity3D学习笔记(二十一):InputFiled、Dropdown、Scroll Rect、Mask的更多相关文章

  1. python3.4学习笔记(二十一) python实现指定字符串补全空格、前面填充0的方法

    python3.4学习笔记(二十一) python实现指定字符串补全空格.前面填充0的方法 Python zfill()方法返回指定长度的字符串,原字符串右对齐,前面填充0.zfill()方法语法:s ...

  2. (C/C++学习笔记) 二十一. 异常处理

    二十一. 异常处理 ● 异常的概念 程序的错误通常包括:语法错误.逻辑错误.运行异常. 语法错误指书写的程序语句不合乎编译器的语法规则,这种错误在编译.连接时由编译器指出. 逻辑错误是指程序能顺利运行 ...

  3. Java基础学习笔记二十一 多线程

    多线程介绍 学习多线程之前,我们先要了解几个关于多线程有关的概念.进程:进程指正在运行的程序.确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能. 线 ...

  4. 过滤器(web基础学习笔记二十一)

    一.过滤器简介 二.在Eclipse中创建过滤器 三.使用过滤器设置全部web字符编码 public void doFilter(ServletRequest request, ServletResp ...

  5. Java学习笔记二十一:Java面向对象的三大特性之继承

    Java面向对象的三大特性之继承 一:继承的概念: 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类. 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方 ...

  6. PHP学习笔记二十一【全局变量】

    <?PHP //定义全局变量 global $a; $a=9; //给全局变量赋值 function test1() { global $a; $a=45; } test1(); echo $a ...

  7. Unity3D学习笔记(十一):布料和协程

    延迟函数:动态资源加载:T:Resources.Load<T>(string path);Assets - Resources,Resources是一个资源管理的工具类,预制体放在Reso ...

  8. angular学习笔记(二十一)-$http.get

    基本语法: $http.get('url',{}).success(function(data,status,headers,config){}).error(function(data,status ...

  9. python cookbook第三版学习笔记二十一:利用装饰器强制函数上的类型检查

    在演示实际代码前,先说明我们的目标:能对函数参数类型进行断言,类似下面这样: @typeassert(int, int) ... def add(x, y): ...     return x + y ...

  10. 学习笔记:CentOS7学习之二十一: 条件测试语句和if流程控制语句的使用

    目录 学习笔记:CentOS7学习之二十一: 条件测试语句和if流程控制语句的使用 21.1 read命令键盘读取变量的值 21.1.1 read常用见用法及参数 21.2 流程控制语句if 21.2 ...

随机推荐

  1. [记录]Visual Studio 插件

    NuGet Resharper Viasfora : 着色 ozcode2 : 调试 dbforge  调试 phptools vsdoc man DebugStudio Alpha Producti ...

  2. dedecms建的网站如何去掉/index.html

    DEDECMS建立的网站,www.abc.com/index.html和www.abc.com两个都可以访问,而且两个页面都是一样的,这样就会造成重复页面,对搜索引擎不友好,那么怎么去掉index.h ...

  3. [py]access日志入mysql-通过flask前端展示

    目录 pymysql组装sql入库日志 代码组织 将入库的日志通过flask前端展示 pymysql组装sql入库日志 pymysql模块的用法 采集这些指标(metirc)都是linux环境,会用到 ...

  4. Python做接口自动化测试框架

    框架结构如下: Test_Api_Project||---base.py|---base_api| |---register_api.py | |---send_sms_code_api.py|--- ...

  5. TraceSource记录程序日志

    1.配置文件 <system.diagnostics> <sources> <source name="TraceError" switchValue ...

  6. C# Bulk Operations(转)

    转自http://blog.csdn.net/winnyrain/article/details/51240684 Overcome SqlBulkCopy Limitations with C# B ...

  7. click 在网页测试手机模式下无效,不能执行。调成非手机模式即可

    click  在网页测试手机模式下无效,不能执行. 调成非手机模式即可

  8. 在线js调试工具JSbin、jsFiddle

    在线js调试工具JSbin.jsFiddle JS Bin - Collaborative JavaScript Debugginghttp://jsbin.com/?html,output这个在线j ...

  9. python3.4学习笔记(二十六) Python 输出json到文件,让json.dumps输出中文 实例代码

    python3.4学习笔记(二十六) Python 输出json到文件,让json.dumps输出中文 实例代码 python的json.dumps方法默认会输出成这种格式"\u535a\u ...

  10. spring中对象转json过滤(jackson)

    spring自带的json解析器是jackson jackson注解 @JsonIgnore 此注解用于属性上,作用是进行JSON操作时忽略该属性. @JsonFormat 此注解用于属性上,作用是把 ...