仅作学习,不做任何商业用途
不是源码,不是源码!
是我通过"照虎画猫"写的,可能有些小修改
不提供素材,所以应该不算是盗版资源,侵权删
登录面板UI

登录数据逻辑
这是初始化的数据变量脚本
cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LogData {
//账号
public string usingname;
//密码
public string password;
//是否记住密码
public bool isRememberPw;
//是否自动登录
public bool isRememberLog;
//服务器
}
这是数据管理器
cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LogDataManger
{
//登录管理器为单例模式
private static LogDataManger logdatamanger = new LogDataManger();//唯一实例
public static LogDataManger instance = logdatamanger;//访问入口
//登录访问数据,私有变量和公共属性,以便获取
private LogData logdata;
public LogData LogData {
get {
return logdata;
}
}
//注册访问数据,同上
private RegisterData registerdata;
public RegisterData RegisterData{
get{
return registerdata;
}
}
//JsonMgr这块我直接照抄的,因为没跟写Json管理器
private LogDataManger() {
logdata = JsonMgr.Instance.LoadData<LogData>("LogData");
registerdata= JsonMgr.Instance.LoadData<RegisterData>("RegisterData");
}
//存储登录数据
public void Save()
{
JsonMgr.Instance.SaveData(logdata, "LogData");
}
//存储注册数据
public void SaveRegister() {
JsonMgr.Instance.SaveData(registerdata, "RegisterData");
}
//注册方法
public bool RegisterUser(string username,string password)
{
//如果用户名或密码存在则无需注册
if(registerdata.registerInfo.ContainsKey(username) )
return false;
//如果不存在则实时注册并保存
registerdata.registerInfo.Add(username, password);
SaveRegister();
return true;
}
//用户名和密码是否合法
public bool CheckInfo(string userName,string passWord)
{
//是否有该用户
if(registerdata.registerInfo.ContainsKey(userName))
{
//如果有该用户,则核查密码
if (registerdata.registerInfo[userName] == passWord)
return true;
}
return false;
}
}
登录面板的逻辑
cs
using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Windows;
public class 登陆面板Panel : 面板基类 {
//两个按钮
public Button sign;
public Button log;
//两个输入框
public InputField usingname;
public InputField password;
//两个勾选框
public Toggle Pw;//密码的
public Toggle Log;//自动登录的
protected override void Init() {
//登录确认
log.onClick.AddListener(
() => {
if (usingname.text.Length <= 6 ||
password.text.Length <= 6) {
UIManger.Instance.ShowPanel<提示面板Panel>().TipText("账号或密码大于6位");
return;
}
if(LogDataManger.instance.CheckInfo(usingname.text, password.text))
{
LogDataManger.instance.LogData.usingname = usingname.text;
LogDataManger.instance.LogData.password = password.text;
LogDataManger.instance.LogData.isRememberLog = Log.isOn;
LogDataManger.instance.LogData.isRememberPw = Pw.isOn;
UIManger.Instance.HidePanel<登陆面板Panel>();
}
else
{
UIManger.Instance.ShowPanel<提示面板Panel>().TipText("账号或密码错误");
}
}
);
//注册确认
sign.onClick.AddListener(
() => {
//隐藏登录面板
UIManger.Instance.HidePanel<登陆面板Panel>();
//弹出注册面板
UIManger.Instance.ShowPanel<注册面板panel>();
}
);
//记住密码关掉,自动登录也应该关掉
Pw.onValueChanged.AddListener(
(ison) => {
if(ison==false)
{
Log.isOn = false;
}
}
);
//自动登录应该和记住密码同时勾选
Log.onValueChanged.AddListener(
(ison) => {
if(ison==true)
{
Pw.isOn = true;
}
}
);
}
public override void ShowMe() {
base.ShowMe();
//获取登录面板数据,以方便更新面板的信息
LogData logData = LogDataManger.instance.LogData;
//复选框的更新
Pw.isOn = logData.isRememberPw;
Log.isOn = logData.isRememberLog;
usingname.text =logData.usingname;
//如果选中了记住密码,可以更新密码
if(Pw.isOn)
password.text =logData.password;
else
{ }
//如果选中了自动登录
}
//登录面板记录注册面板注册好的账号密码的方法
public void SetInfo(string usename,string passwords)
{
usingname.text = usename;
password.text = passwords;
}
}
因为还有注册面板和登录进去的服务器面板没拼完,所以逻辑写到这里就算完成了这一部分了