Unity3D学习笔记(二十一):InputFiled、Dropdown、Scroll Rect、Mask
文本内容的左右边距缩进

输入内容Text组件报错

去掉Text组件的富文本选项

两个输入框的TAB切换

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);
}
}
代码操作
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项)

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的更多相关文章
- python3.4学习笔记(二十一) python实现指定字符串补全空格、前面填充0的方法
python3.4学习笔记(二十一) python实现指定字符串补全空格.前面填充0的方法 Python zfill()方法返回指定长度的字符串,原字符串右对齐,前面填充0.zfill()方法语法:s ...
- (C/C++学习笔记) 二十一. 异常处理
二十一. 异常处理 ● 异常的概念 程序的错误通常包括:语法错误.逻辑错误.运行异常. 语法错误指书写的程序语句不合乎编译器的语法规则,这种错误在编译.连接时由编译器指出. 逻辑错误是指程序能顺利运行 ...
- Java基础学习笔记二十一 多线程
多线程介绍 学习多线程之前,我们先要了解几个关于多线程有关的概念.进程:进程指正在运行的程序.确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能. 线 ...
- 过滤器(web基础学习笔记二十一)
一.过滤器简介 二.在Eclipse中创建过滤器 三.使用过滤器设置全部web字符编码 public void doFilter(ServletRequest request, ServletResp ...
- Java学习笔记二十一:Java面向对象的三大特性之继承
Java面向对象的三大特性之继承 一:继承的概念: 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类. 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方 ...
- PHP学习笔记二十一【全局变量】
<?PHP //定义全局变量 global $a; $a=9; //给全局变量赋值 function test1() { global $a; $a=45; } test1(); echo $a ...
- Unity3D学习笔记(十一):布料和协程
延迟函数:动态资源加载:T:Resources.Load<T>(string path);Assets - Resources,Resources是一个资源管理的工具类,预制体放在Reso ...
- angular学习笔记(二十一)-$http.get
基本语法: $http.get('url',{}).success(function(data,status,headers,config){}).error(function(data,status ...
- python cookbook第三版学习笔记二十一:利用装饰器强制函数上的类型检查
在演示实际代码前,先说明我们的目标:能对函数参数类型进行断言,类似下面这样: @typeassert(int, int) ... def add(x, y): ... return x + y ...
- 学习笔记:CentOS7学习之二十一: 条件测试语句和if流程控制语句的使用
目录 学习笔记:CentOS7学习之二十一: 条件测试语句和if流程控制语句的使用 21.1 read命令键盘读取变量的值 21.1.1 read常用见用法及参数 21.2 流程控制语句if 21.2 ...
随机推荐
- springmvc接收参数
springmvc执行流程 搭建ssm框架:http://www.cnblogs.com/liyafei/p/7955413.html 1:从表单中接收 普通请求参数 结构目录 role.html 1 ...
- [vue]webpack&vue组件工程化实践
[vue]全局组件和局部组件(嵌套+props引用父组件数据) [vue]组件篇 [vue]组件的创建(componet)和销毁(keep-alive缓存)和父子dom同步nextTick [vue] ...
- XMR恶意挖矿案例简析
前言 数字货币因其技术去中性化和经济价值等属性,逐渐成为大众关注的焦点,同时通过恶意挖矿获取数字货币是黑灰色产业获取收益的重要途径.本文简析通过蜜罐获取的XMR恶意挖矿事件:攻击者通过爆破SSH获取系 ...
- R语言学习笔记:基础知识
1.数据分析金字塔 2.[文件]-[改变工作目录] 3.[程序包]-[设定CRAN镜像] [程序包]-[安装程序包] 4.向量 c() 例:x=c(2,5,8,3,5,9) 例:x=c(1:100) ...
- unity3d-Visual Studio Tools for Unity快捷键
1.首先 当安装for unity 后,打开vs2013(我使用的是vs2013),右键可以看到for unity 提供了两个快捷键 2.其次 (Ctrl+Shift+M) 3.最后(Ctrl+Shi ...
- js绘制圆形时钟
纯js制作圆形时钟 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- Linux系统——MySQL基础(一)
# 数据库 ## 数据库简单的分类:(1)关系型数据库:MySQL和Oracle.Postgresql(2)非关系型数据库:Memcached和Redis(3)消息队列中间件(4)搜索引擎数据库:El ...
- A+B+C问题
这是一个非常简单的题目,意在考察你编程的基础能力.千万别想难了哦.输入为一行,包括了用空格分隔的三个整数 AA.BB.CC(数据范围均在-40−40 ~ 4040 之间).输出为一行,为“A+B+CA ...
- sql中 substring和charindex 的用法
-- 第一个参数是要截取的字符串,第二个参数是从第几个字符开始截取,第三个参数是截取的长度 --例如:select SUBSTRING('12345678',1,4) 返回 1234 -- selec ...
- Codeforces 1144G Two Merged Sequences
题意: 将一个序列分成两个序列,两个序列中元素的相对顺序保持和原序列不变,使得分出的两个序列一个严格上升,一个严格下降. 思路: 我们考虑每个元素都要进入其中一个序列. 那么我们维护一个上升序列和一个 ...