有一下功能
1、账号密码本地存储
2、支持忘记密码 修改密码
3、通过邮箱验证码 注册
4、注册码有时效限制
这只是个小demo,只注重实现功能
下面是代码
using System;
using System.Collections;
using System.Collections.Generic;
using System.Net;
using System.Net.Mail;
using System.Text.RegularExpressions;
using UnityEditorInternal;
using UnityEngine;
using UnityEngine.UI;
using Random = System.Random;public class Eamile : MonoBehaviour
{//注册界面public GameObject Register;//注册邮箱的输入框public InputField RegisterEamil;//验证码的输入框public InputField CodeInput;//密码输入框public InputField Password;//发送验证码的按钮public Button SendCode;//确认注册按钮public Button Confirm;//返回按钮public Button Return;//登陆界面public GameObject Longin;//登陆邮箱的输入框public InputField LonginEamil;//登陆密码的输入框public InputField LonginPassWord;//登陆按钮public Button LonginBut;//注册按钮public Button RegisterBtu;//忘记密码按钮public Button ForgotPasswordBut;//验证码string a = "0123456789";/// <summary>/// 随机出来的验证码/// </summary>private string code;/// <summary>/// 倒计时/// </summary>private float time;//是否点击了忘记密码private bool isForgotPassword;/// <summary>/// 存储账号/// </summary>//private Dictionary<string, string> SaveAccount = new Dictionary<string, string>();// Start is called before the first frame updatevoid Start(){SendCode.onClick.AddListener(SendEamil);Confirm.onClick.AddListener(ConfirmOnClick);LonginBut.onClick.AddListener(LonginOnClick);RegisterBtu.onClick.AddListener(RegisterOnClick);ForgotPasswordBut.onClick.AddListener(ForgotPassword);Return.onClick.AddListener(ReturnOnClick );}// Update is called once per framevoid Update(){if (time > 0){time -= Time.deltaTime;if (time <= 0){code = "";SendCode.enabled = true ;}}}/// <summary>/// 发送验证码/// </summary>public void SendEamil(){if (PlayerPrefs .HasKey(RegisterEamil.text)&&!isForgotPassword){Debug.Log("账号已注册");return;}try{//实例化一个随机数Random num = new Random();for (int i = 0; i < 4; i++){code = code + a.Substring(num.Next(0, a.Length), 1);}Debug.Log("验证码" + code);SmtpClient mailClient = new SmtpClient("smtp.qq.com");//使用的是qq邮箱,mailClient.EnableSsl = true;mailClient.Credentials = new NetworkCredential("邮箱", "邮箱的授权码");//不知道授权码的 自行百度 Debug.Log(RegisterEamil.text);//发验证码用的邮箱,注册账号的邮箱MailMessage message = new MailMessage(new MailAddress("邮箱"), new MailAddress(RegisterEamil.text));message.Body = "您的验证码为" + code + ",请在30分钟内验证,系统邮件请勿回复!";message.Subject = "验证码";mailClient.Credentials = mailClient.Credentials;// mailClient.Send(message);mailClient.SendCompleted += new SendCompletedEventHandler((sender, arg) =>{bool isResult = arg.Error == null;if (!isResult){//发送失败Debug.LogError(arg.Error);}else{//发送成功}});mailClient.SendAsync(message, null);//发送验证码 按钮失效SendCode.enabled = false;//倒计时 30分钟 1800秒time = 1800;}catch (Exception e){Debug.Log("邮箱格式不正确");}}/// <summary>/// 判断验证码是否正确/// </summary>public bool CodeBool(){if (code.Equals(CodeInput.text)){Debug.Log("验证码正确");return true;}else{Debug.Log("验证码错误");return false;}}/// <summary>/// 登陆按钮/// </summary>public void LonginOnClick(){//判断是否有这个邮箱账号if (PlayerPrefs .HasKey(LonginEamil.text)){//判断密码是否正确if (PlayerPrefs.GetString( LonginEamil.text).Equals( LonginPassWord.text )){Debug.Log($"登陆成功 账号{LonginEamil.text} 密码{PlayerPrefs.GetString(LonginEamil.text)}");}else{Debug.Log($"邮箱或账号不正确 账号{LonginEamil.text} 密码{PlayerPrefs.GetString(LonginEamil.text)}");}}else{Debug.Log($"邮箱或账号不正确 账号{LonginEamil.text} 密码{PlayerPrefs.GetString(LonginEamil.text)}");}}/// <summary>/// 注册按钮/// </summary>public void RegisterOnClick(){Longin.gameObject.SetActive(false);Register.gameObject.SetActive(true);SendCode.enabled = true ;Debug.Log("注册账号'");LonginEamil.text = "";LonginPassWord.text = "";code = "";}/// <summary>/// 忘记密码/// </summary>public void ForgotPassword(){RegisterOnClick();Debug.Log("忘记密码");isForgotPassword = true;}/// <summary>/// 确认按钮/// </summary>public void ConfirmOnClick(){//验证码时间超出现在 验证码错误if (time <= 0&&!CodeBool()){Debug.Log("验证码已过期 请重新获取验证码");SendCode.enabled = true ;return;}//判断字典是否有这个账号 如果有(说明是要修改密码) 反之注册新的账号if (PlayerPrefs .HasKey(RegisterEamil.text)){//修改密码PlayerPrefs.SetString(RegisterEamil.text, Password.text);Debug.Log("修改密码成功");Debug.Log($" 账号{RegisterEamil.text} 密码{PlayerPrefs.GetString(RegisterEamil.text)}");}else{//注册账号PlayerPrefs.SetString(RegisterEamil.text, Password.text);Debug.Log("注册新账号成功");Debug.Log($" 账号{RegisterEamil.text} 密码{PlayerPrefs.GetString(RegisterEamil.text)}");}ReturnOnClick();}//返回按钮public void ReturnOnClick(){Longin.gameObject.SetActive(true );Register.gameObject.SetActive(false );RegisterEamil.text = "";Password.text = "";CodeInput.text = "";}
}