CultivateImmortal/Assets/Scripts/BeginScene/UI/LoginPanel.cs

185 lines
5.4 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System.Collections;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class LoginPanel : BasePanel
{
//注册按钮
public Button btnRegister;
//登录按钮
public Button btnLogin;
//账号输入框
public InputField inputUser;
public Text txtPlaUser;
//密码输入框
public InputField inputPw;
public Text txtPlaPw;
public override void Init()
{
Debug.Log(Application.persistentDataPath);
GameDataMgr.Instance.Init();
btnRegister.onClick.AddListener(() =>
{
UIManager.Instance.ShowPanel<RegisterPanel>(E_UILayer.Bottom);
UIManager.Instance.HidePanel<LoginPanel>();
});
btnLogin.onClick.AddListener(() =>
{
//点击登录后 要验证用户密码 是否正确
//判断是否合法
if (inputPw.text.Length <= 6 || inputUser.text.Length <= 6)
{
//提示不合法
TipPanel panel = UIManager.Instance.ShowPanel<TipPanel>(E_UILayer.Bottom);
//改变提示面板上提示的内容
panel.ChangeInfo("账号和密码都必须大于6位");
return;
}
//验证 用户名和密码 是否 通过
if (GameDataMgr.Instance.CheckInfo(inputUser.text, inputPw.text))
{
//读取玩家数据
GameDataMgr.Instance.PlayerDataLoad(inputUser.text);
//登录成功
UIManager.Instance.ShowPanel<TopPanel>(E_UILayer.System);
UIManager.Instance.ShowPanel<BattlePanel>(E_UILayer.Bottom);
UIManager.Instance.ShowPanel<LowerPanel>(E_UILayer.System);
//隐藏自己
UIManager.Instance.HidePanel<LoginPanel>();
}
else
{
//登录失败
UIManager.Instance.ShowPanel<TipPanel>(E_UILayer.Middle).ChangeInfo("账号或密码错误");
}
});
//账号输入规范,只能输入大小写字母和数字
inputUser.onValueChanged.AddListener((value) =>
{
// 使用正则表达式,只保留大小写字母和数字
string userStr = Regex.Replace(value, @"[^a-zA-Z0-9]", "");
// 限制最多输入 16 个字符
if (userStr.Length > 16)
{
userStr = userStr.Substring(0, 16);
}
// 更新输入框内容
if (value != userStr)
{
inputUser.text = userStr;
}
});
//密码输入规范,只能输入大小写字母和数字
inputPw.onValueChanged.AddListener((value) =>
{
// 使用正则表达式,只保留大小写字母和数字
string pwStr = Regex.Replace(value, @"[^a-zA-Z0-9]", "");
// 限制最多输入 16 个字符
if (pwStr.Length > 16)
{
pwStr = pwStr.Substring(0, 16);
}
// 更新输入框内容
if (value != pwStr)
{
inputPw.text = pwStr;
}
});
}
void Update()
{
// 检测 Tab 键按下
if (Input.GetKeyDown(KeyCode.Tab))
{
// 获取当前选中的对象
GameObject currentSelected = EventSystem.current.currentSelectedGameObject;
// 判断当前对象是哪个输入框,并跳转到另一个输入框
if (currentSelected == inputUser.gameObject)
{
inputPw.Select();
if (inputUser.text== "")
{
txtPlaUser.text = "请输入账号";
}
if (inputPw.text== "")
{
txtPlaPw.text = "";
}
}
else if (currentSelected == inputPw.gameObject)
{
inputUser.Select();
if (inputPw.text == "")
{
txtPlaPw.text = "请输入密码";
}
if (inputUser.text == "")
{
txtPlaUser.text = "";
}
}
}
// 当鼠标点击输入框时
if (EventSystem.current.currentSelectedGameObject == inputUser.gameObject)
{
// 清空Placeholder
txtPlaUser.text = "";
if (inputPw.text == "")
{
txtPlaPw.text = "请输入密码";
}
}
if (EventSystem.current.currentSelectedGameObject == inputPw.gameObject)
{
// 清空Placeholder
txtPlaPw.text = "";
if (inputUser.text == "")
{
txtPlaUser.text = "请输入账号";
}
}
// 检测鼠标点击
if (Input.GetMouseButtonDown(0))
{
// 如果没有选中的对象清空所有Placeholder
if (EventSystem.current.currentSelectedGameObject == null)
{
if (string.IsNullOrEmpty(inputUser.text))
{
txtPlaUser.text = "请输入账号";
}
if (string.IsNullOrEmpty(inputPw.text))
{
txtPlaPw.text = "请输入密码";
}
}
}
}
/// <summary>
/// 注册成功后调用
/// </summary>
/// <param name="user"></param>
/// <param name="passward"></param>
public void SetInfo(string user, string passward)
{
inputUser.text = user;
inputPw.text = passward;
}
}