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;
    }

}

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

相关推荐
e***74951 小时前
Spring Security 官网文档学习
java·学习·spring
山河亦问安4 小时前
Spring原理编码学习
java·学习·spring
思成不止于此5 小时前
【C++ 数据结构】二叉搜索树:原理、实现与核心操作全解析
开发语言·数据结构·c++·笔记·学习·搜索二叉树·c++40周年
碧海潮生_CC6 小时前
【CUDA笔记】03 CUDA GPU 架构与一般的程序优化思路(下)
笔记·架构·cuda
钟屿6 小时前
Back to Basics: Let Denoising Generative Models Denoise 论文阅读学习
论文阅读·人工智能·笔记·学习·计算机视觉
d111111111d6 小时前
SPI通信协议--在STM32中介绍(学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习
愚昧之山绝望之谷开悟之坡6 小时前
业务接待-公务接待-商务接待
笔记
断水客7 小时前
如何在手机上搭建Linux学习环境
linux·运维·学习
j***12158 小时前
网络爬虫学习:应用selenium获取Edge浏览器版本号,自动下载对应版本msedgedriver,确保Edge浏览器顺利打开。
爬虫·学习·selenium
大数据追光猿8 小时前
LangChain / LangGraph / AutoGPT / CrewAI / AutoGen 五大框架对比
经验分享·笔记·python·langchain·agent