Unity UGUI 实战学习笔记(4)

仅作学习,不做任何商业用途

不是源码,不是源码!

是我通过"照虎画猫"写的,可能有些小修改

不提供素材,所以应该不算是盗版资源,侵权删

登录面板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;
    }

}

因为还有注册面板和登录进去的服务器面板没拼完,所以逻辑写到这里就算完成了这一部分了

相关推荐
Olrookie8 小时前
ruoyi-vue(十五)——布局设置,导航栏,侧边栏,顶部栏
前端·vue.js·笔记
使一颗心免于哀伤1 天前
《设计模式之禅》笔记摘录 - 21.状态模式
笔记·设计模式
_落纸3 天前
三大基础无源电子元件——电阻(R)、电感(L)、电容(C)
笔记
Alice-YUE3 天前
【CSS学习笔记3】css特性
前端·css·笔记·html
2303_Alpha3 天前
SpringBoot
笔记·学习
萘柰奈3 天前
Unity学习----【进阶】TextMeshPro学习(三)--进阶知识点(TMP基础设置,材质球相关,两个辅助工具类)
学习·unity
沐矢羽3 天前
Tomcat PUT方法任意写文件漏洞学习
学习·tomcat
好奇龙猫3 天前
日语学习-日语知识点小记-进阶-JLPT-N1阶段蓝宝书,共120语法(10):91-100语法+考え方13
学习
向阳花开_miemie3 天前
Android音频学习(十八)——混音流程
学习·音视频
工大一只猿3 天前
51单片机学习
嵌入式硬件·学习·51单片机