using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.SceneManagement; using System.Text.RegularExpressions; /* 登录界面 */ public class LoginView : MonoBehaviour { //登录方式-左侧切换按钮-按钮纹理 [SerializeField] Sprite[] loginModeSprites; //登录方式-左侧切换按钮 [SerializeField] GameObject loginNormalTab; [SerializeField] GameObject loginPhoneTab; //用户登录 [SerializeField] GameObject loginInUser; [SerializeField] GameObject loginInPWD; [SerializeField] GameObject loginInCaptcha1; //手机登录 [SerializeField] GameObject loginInPhone; [SerializeField] GameObject loginInCode; [SerializeField] GameObject loginValidTime; [SerializeField] GameObject loginInCaptcha2; int loginMode = 1; //状态记录 public int captcha_Login = -222222222; public int captcha_LoginPhone = -222222222; public static LoginView ins; void Awake() { ins = this; if (CommonConfig.needToExamine) { transform.Find("BtnTabSwitch/LoginPhone").gameObject.SetActive(false); //隐藏手机登录 transform.Find("BtnForgetPWD").gameObject.SetActive(false); //隐藏忘记密码 transform.Find("Logo/Layout/Text1").gameObject.SetActive(false); } } void Start() { InitInputLimit(); SelectLoginMode(1); } void OnDestroy() { if (ins == this) ins = null; } void Update() { #if UNITY_EDITOR if (Input.GetKeyDown(KeyCode.Q)) { GetInputField(loginInUser).text = "lvjincheng"; GetInputField(loginInPWD).text = "19980301"; GetInputField(loginInCaptcha1).text = captcha_Login.ToString(); LoginNormal(); } if (Input.GetKeyDown(KeyCode.W)) { GetInputField(loginInUser).text = "tester"; GetInputField(loginInPWD).text = "123456"; GetInputField(loginInCaptcha1).text = captcha_Login.ToString(); LoginNormal(); } #endif } void InitInputLimit() { GameObject[] inputNodes = {loginInUser, loginInPWD}; foreach (var inputNode in inputNodes) { InputField inputField = GetInputField(inputNode); inputField.onValueChanged.AddListener(delegate(string text) { Match match = new Regex("[^A-Za-z0-9]").Match(text); if (match.Success) { inputField.text = text.Replace(match.Value, ""); } }); } } public void SelectLoginMode(int mode) { loginMode = mode; if (loginMode == 1) { loginNormalTab.GetComponent().sprite = loginModeSprites[1]; loginPhoneTab.GetComponent().sprite = loginModeSprites[0]; loginInUser.SetActive(true); loginInPWD.SetActive(true); loginInCaptcha1.SetActive(true); loginInPhone.SetActive(false); loginInCode.SetActive(false); loginValidTime.SetActive(false); loginInCaptcha2.SetActive(false); Transform btnRegister = transform.Find("BtnRegister"); Vector3 v31 = btnRegister.localPosition; v31.y = -168.5f; btnRegister.localPosition = v31; if (captcha_Login < 0) { ChnageCaptcha1(); } } else if (loginMode == 2) { loginNormalTab.GetComponent().sprite = loginModeSprites[0]; loginPhoneTab.GetComponent().sprite = loginModeSprites[1]; loginInUser.SetActive(false); loginInPWD.SetActive(false); loginInCaptcha1.SetActive(false); loginInPhone.SetActive(true); loginInCode.SetActive(false); loginValidTime.SetActive(false); loginInCaptcha2.SetActive(false); Transform btnInPhone = loginInPhone.transform; Vector3 v30 = btnInPhone.localPosition; v30.y = -30f; btnInPhone.localPosition = v30; Transform btnRegister = transform.Find("BtnRegister"); Vector3 v31 = btnRegister.localPosition; v31.y = -88; btnRegister.localPosition = v31; if (captcha_LoginPhone < 0) { ChnageCaptcha2(); } } } InputField GetInputField(GameObject inputNode) { return inputNode.transform.Find("InputField").GetComponent(); } public void ChnageCaptcha1() { StartCoroutine(CaptchaController.ins.GetCaptcha( loginInCaptcha1.transform.Find("CodeImage").GetComponent(), (code) => { captcha_Login = code; } )); } public void ChnageCaptcha2() { StartCoroutine(CaptchaController.ins.GetCaptcha( loginInCaptcha2.transform.Find("CodeImage").GetComponent(), (code) => { captcha_LoginPhone = code; } )); } public void Login() { if (loginMode == 1) { LoginNormal(); } else if (loginMode == 2) { LoginByPhone(); } } JC.CS.Throttler throttlerLoginNormal = new JC.CS.Throttler(2000); void LoginNormal() { InputField user = GetInputField(loginInUser); if (user.text.Trim().Length == 0) { PopupMgr.ins.ShowTip(TextAutoLanguage2.GetTextByCNKey("请输入用户名")); return; } InputField pwd = GetInputField(loginInPWD); if (pwd.text.Trim().Length == 0) { PopupMgr.ins.ShowTip(TextAutoLanguage2.GetTextByCNKey("请输入密码")); return; } InputField captcha = GetInputField(loginInCaptcha1); if (!captcha.text.Equals(captcha_Login.ToString())) { PopupMgr.ins.ShowTip(TextAutoLanguage2.GetTextByCNKey("验证码错误")); return; } if (!AgreenmentOption.ins.IsAgreementChecked()) { PopupMgr.ins.ShowTip(TextAutoLanguage2.GetTextByCNKey("请阅读并同意App协议")); return; } if (throttlerLoginNormal.CanPass() == false) { PopupMgr.ins.ShowTip(TextAutoLanguage2.GetTextByCNKey("操作过于频繁")); return; } StartCoroutine(LoginController.ins.LoginNormal( user.text, pwd.text, (res) => { PopupMgr.ins.ShowTip(TextAutoLanguage2.GetTextByCNKey(res.msg)); if (res.code == 0) { string IdAndToken = (string)res.data; PlayerPrefs.SetString("IdAndToken", IdAndToken); SceneManager.LoadScene("Home", LoadSceneMode.Single); } } )); } void LoginByPhone() { InputField user = GetInputField(loginInPhone); Regex regex = new Regex(@"^(((13[0-9]{1})|(15[0-35-9]{1})|(17[0-9]{1})|(18[0-9]{1}))+\d{8})$"); bool isMobilePhone = regex.IsMatch(user.text); if (!isMobilePhone) { PopupMgr.ins.ShowTip(TextAutoLanguage2.GetTextByCNKey("手机号格式不正确")); return; } StartCoroutine(LoginController.ins.LoginByPhone( user.text, (res) => { PopupMgr.ins.ShowTip(TextAutoLanguage2.GetTextByCNKey(res.msg)); if (res.code == 0) { string IdAndToken = (string)res.data; PlayerPrefs.SetString("IdAndToken", IdAndToken); SceneManager.LoadScene("Home", LoadSceneMode.Single); } } )); } public void FillLoginInput(string username, string password) { GetInputField(loginInUser).text = username; GetInputField(loginInPWD).text = password; } }