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 ...
随机推荐
- wordpress如何正确自动获取中文日志摘要
WordPress 函数 get_the_excerpt() 可以获取日志的摘要,如果没有摘要,它会自动获取内容,并且截取.但是由于无法正确统计中文字符数,我爱水煮鱼撰写了下面这个函数来解决这个问题. ...
- cube-ui的用法
.安装:npm install cube-ui -S .修改 .babelrc:(添加到plugins中去) { "plugins": [ ["transform-mod ...
- 杀死正在运行的进程: linux
1:杀死正在运行的进程:使用ps -aux|grep labor 查出进程PID 2:使用kill PID 将进程杀死.
- thinkpad X1 extreme 安装Ubuntu 18.04.2 LTS
1.安装的时候需要禁用:nouveau.modeset=0 2.安装完成之后需要添加:acpi=off ,ro后面加上3,直接进入终端 3.启动之后:安装nvdia驱动 $ ubuntu-driver ...
- html的img标签 强大的title
示例: <img src="smiley-2.gif" alt="Smiley face" width="42" height=&qu ...
- 主成分分析(PCA)算法,K-L变换 角度
主成分分析(PCA)是多元统计分析中用来分析数据的一种方法,它是用一种较少数 量的特征对样本进行描述以达到降低特征空间维数的方法,它的本质实际上是K-L变换.PCA方法最著名的应用应该是在人脸识别中特 ...
- 非常不错的一个JS分页效果代码
这里分享一个不错的js分页代码. 代码中cpage是页面计数,应为全局变量,可以随处调用它: totalpage是总页数. 与asp分页代码很类似,也是先取得记录总数,然后实现分页,基本的分页思路与原 ...
- Zooming
Zooming 是一款纯 javascript 图片缩放库,主要特点有: 不依赖其他库,纯 JavaScript 实现,支持移动设备: 流畅的动画: 可缩放高清图像: 易于集成和定制. 使用方法 1. ...
- Atcoder Tenka1 Programmer Contest 2019 E - Polynomial Divisors
题意: 给出一个多项式,问有多少个质数\(p\)使得\(p\;|\;f(x)\),不管\(x\)取何值 思路: 首先所有系数的\(gcd\)的质因子都是可以的. 再考虑一个结论,如果在\(\bmod ...
- ZOJ 3949 Edge to the Root
题意: 在一棵树中,可以从根节点往其他节点加一条边,使得根节点到其他所有节点的距离和最小,输出最小的距离和. 思路: 我们考虑在加的一条边为$1 \to v$,那么在树上从$1 \to v$的路径上, ...