unity中登录界面

配置好相关组件 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System.IO;
using TMPro;
public class LoginUI : MonoBehaviour
{
    [Header("登录界面")]
    [SerializeField] GameObject loginPanel;
    [SerializeField] Button startButton;
    [SerializeField] Button registerButton;
    public TMP_InputField userField;
    public TMP_InputField passwordField;

    [Header("注册界面")]
    [SerializeField] GameObject registerPanel;
    public TMP_InputField registerUserField;
    public TMP_InputField registerPasswordField;
    public TMP_InputField registerConfirmPasswordField;
    [SerializeField] Button confirmButton;
    [SerializeField] Button backButton;

    [Header("消息")]
    [SerializeField] CanvasGroup messageGroup;
    [SerializeField] TMP_Text messageText;
    [SerializeField] float fadeDuration;

    [Header("玩家数据")]
    public List<UserData> dataList = new List<UserData>();

    private void Start()
    {
        //按钮绑定事件 点击触发事件
        startButton.onClick.AddListener(StartButtonOnClick);
        registerButton.onClick.AddListener(RegisterButtonOnClick);
        confirmButton.onClick.AddListener(ConfirmButtonOnClick);
        backButton.onClick.AddListener(BackButtonOnClick);
        dataList= LoadList();
    }
    private void RegisterButtonOnClick()
    {
        loginPanel.SetActive(false);
        registerPanel.SetActive(true);
    }

    public void StartButtonOnClick()
    {
        string inputText = userField.text;
        string password = passwordField.text;

        bool isSucceed = false;

        foreach (var data in dataList)
        {
            if (data.UserName == inputText)
            {
                if (data.UserPassword == password)
                {
                    Debug.Log("登录成功");
                    StopCoroutine(MessageShowCoroutine("Success"));
                    StartCoroutine(MessageShowCoroutine("Success"));

                    //其他登录成功后的逻辑

                    isSucceed = true;
                    break;
                }
            }
        }
        if (!isSucceed)
        {
            Debug.Log("登录失败,没有注册");
            StopCoroutine(MessageShowCoroutine("Login failed, no registration"));
            StartCoroutine(MessageShowCoroutine("Login failed, no registration"));
        }

    }
    private void ConfirmButtonOnClick()
    {
        string inputText = registerUserField.text;
        string password = registerPasswordField.text;
        string confirmPassword = registerConfirmPasswordField.text;

        if (confirmPassword != password)
        {
            Debug.Log("密码不一致");
            StopCoroutine(MessageShowCoroutine("Passwords are inconsistent"));
            StartCoroutine(MessageShowCoroutine("Passwords are inconsistent"));
        }
        else
        {
            bool isExitst=false;
            foreach(var Data in  dataList)
            { 
                if(Data.UserName == inputText)
                {
                    isExitst=true;
                    Debug.Log("已经存在该用户");
                    StopCoroutine(MessageShowCoroutine("The user already exists"));
                    StartCoroutine(MessageShowCoroutine("The user already exists"));
                    break;
                }
            }
            if(!isExitst)
            {
                UserData data = new UserData();
                data.UserName = inputText;
                data.UserPassword = password;
                dataList.Add(data);

                SaveList(dataList);
                Debug.Log("注册成功");
                StopCoroutine(MessageShowCoroutine("Registration is successful"));
                StartCoroutine(MessageShowCoroutine("Registration is successful"));
            }
        }

    }
    private void BackButtonOnClick()
    {
        loginPanel.SetActive(true);
        registerPanel.SetActive(false);
    }
    // 保存列表数据
    public void SaveList(List<UserData> dataList)
    {
        // 创建包含列表数据的可序列化对象
        SerializableList<UserData> serializableList = new SerializableList<UserData>(dataList);

        // 将列表转换为JSON字符串
        string json = JsonUtility.ToJson(serializableList);

        // 定义保存文件的路径
        string filePath = Application.persistentDataPath + "/UserDataList.json";

        // 将JSON字符串写入文件
        File.WriteAllText(filePath, json);

        Debug.Log("列表已成功保存到本地文件!");
    }
    // 加载列表数据
    public List<UserData> LoadList()
    {
        List<UserData> dataList = new List<UserData>();

        // 定义保存文件的路径
        string filePath = Application.persistentDataPath + "/UserDataList.json";

        if (File.Exists(filePath))
        {
            // 从文件中读取JSON字符串
            string json = File.ReadAllText(filePath);

            // 将JSON字符串转换为列表
            SerializableList<UserData> serializableList = JsonUtility.FromJson<SerializableList<UserData>>(json);
            dataList = serializableList.list;

            Debug.Log("列表已成功从本地文件加载!");

            // 打印加载的列表项
            foreach (UserData item in dataList)
            {
                Debug.Log("Name: " + item.UserName + ", password: " + item.UserPassword);
            }
        }
        else
        {
            Debug.Log("未找到保存的列表文件!");
        }

        return dataList;
    }
    //显示消息
    IEnumerator MessageShowCoroutine(string message)
    {
        float timer = 0f;
        messageGroup.alpha=1;
        messageText.text=message;

        while (timer < fadeDuration)
        {
            timer += Time.deltaTime;
            float t = timer / fadeDuration;
            messageGroup.alpha = Mathf.Lerp(1f, 0f, t);
            yield return null;

        }
    }

}
[System.Serializable]
public class UserData
{
    public string UserName;
    public string UserPassword;
}
[System.Serializable]
public class SerializableList<T>
{
    public List<T> list;

    public SerializableList(List<T> sourceList)
    {
        list = sourceList;
    }
}

登录界面

注册界面

消息框

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值