Unity implements login/registration/audit function

1. Effect display

log in Register

2. Scene preview

Scenes

3. Code

1. Login and registration 1.cs (mounted on the GameObject)

using Newtonsoft.Json;
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Text;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;

public class 登录注册1 : MonoBehaviour
{
    
    
    static 登录注册1 _instance;

    [HideInInspector]
    public string 账号密码文件路径;

    [HideInInspector]
    public string 申请信息文件路径;

    public GameObject 注册登录界面;

    public GameObject 管理界面;

    public GameObject 登录界面;

    public GameObject 注册界面;

    public Button 登录注册按钮;

    public Text 提示信息;

    public Button 返回按钮;

    public GameObject 内容预制体;

    public GameObject content;

    private InputField 登录界面账号;

    private InputField 登录界面密码;

    private Button 注册申请按钮;

    private InputField 注册界面账号;

    private InputField 注册界面密码;

    private InputField 注册界面确认密码;

    private InputField 注册界面申请人;

    [HideInInspector]
    public List<账号信息> 所有的账号信息 = new List<账号信息>();

    [HideInInspector]
    public List<申请信息> 所有的申请信息 = new List<申请信息>();

    public static 登录注册1 Instance
    {
    
    
        get
        {
    
    
            return _instance;
        }
    }

    private void Awake()
    {
    
    
        if (Instance == null)
        {
    
    
            _instance = this;
        }
    }

    // Start is called before the first frame update
    void Start()
    {
    
    
        账号密码文件路径 = "";

        申请信息文件路径 = "";

        登录界面账号 = 登录界面.transform.GetChild(0).GetComponent<InputField>();

        登录界面密码 = 登录界面.transform.GetChild(1).GetComponent<InputField>();

        注册申请按钮 = 登录界面.transform.GetChild(2).GetComponent<Button>();

        注册界面账号 = 注册界面.transform.GetChild(0).GetComponent<InputField>();

        注册界面密码 = 注册界面.transform.GetChild(1).GetComponent<InputField>();

        注册界面确认密码 = 注册界面.transform.GetChild(2).GetComponent<InputField>();

        注册界面申请人 = 注册界面.transform.GetChild(3).GetComponent<InputField>();

        注册申请按钮.onClick.AddListener(注册申请按钮事件);

        登录注册按钮.onClick.AddListener(登录注册按钮事件);

        返回按钮.onClick.AddListener(返回按钮事件);

        数据初始化();
    }

    // 从服务器上读取txt文件
    public IEnumerator 读取账号信息文件(string url)
    {
    
    
        UnityWebRequest request = UnityWebRequest.Get(url);
        yield return request.SendWebRequest();

        if (request.error == null)
        {
    
    
            string text = request.downloadHandler.text;
            if (text != null)
            {
    
    
                string[] lines = text.Split('\n');

                for (int i = 0; i < lines.Length - 1; i++)
                {
    
    
                    string[] parts = lines[i].Split(',');

                    账号信息 创建账号 = new 账号信息();
                    创建账号.账号 = parts[0];
                    创建账号.密码 = parts[1];
                    所有的账号信息.Add(创建账号);

                    // 处理账号密码信息
                    //Debug.Log("Username: " + parts[0] + ", Password: " + parts[1]);
                }
            }
        }
        else
        {
    
    
            Debug.LogError(request.error);
        }
    }

    public IEnumerator 读取申请信息文件(string url)
    {
    
    
        UnityWebRequest request = UnityWebRequest.Get(url);
        yield return request.SendWebRequest();

        if (request.error == null)
        {
    
    
            string text = request.downloadHandler.text;

            if (text != null)
            {
    
    
                string[] lines = text.Split('\n');

                for (int i = 0; i < lines.Length - 1; i++)
                {
    
    
                    string[] parts = lines[i].Split(',');

                    申请信息 申请账号 = new 申请信息();
                    申请账号.申请时间 = parts[0];
                    申请账号.申请人 = parts[1];
                    申请账号.账号 = parts[2];
                    申请账号.密码 = parts[3];
                    申请账号.审核状态 = parts[4];
                    所有的申请信息.Add(申请账号);

                    // 处理账号密码信息
                    //Debug.Log("Time: " + parts[0] + ", People: " + parts[1] + ", Username: " + parts[2] + ", Password: " + parts[3] + ", State: " + parts[4]);
                }
            }
        }
        else
        {
    
    
            Debug.LogError(request.error);
        }
    }

    // 向服务器写入多条账号密码数据
    public IEnumerator WriteTextFile(string url, List<申请信息> 所有申请信息)
    {
    
    
        StringBuilder builder = new StringBuilder();

        foreach (var item in 所有申请信息)
        {
    
    
            string data = item.申请时间 + "," + item.申请人 + "," + item.账号 + "," + item.密码 + "," + item.审核状态 + "," + item.结尾;
            builder.AppendLine(data);
        }

        string dataToSend = builder.ToString();

        UnityWebRequest request = UnityWebRequest.Put(url, dataToSend);

        yield return request.SendWebRequest();

        if (request.error == null)
        {
    
    
            Debug.Log("Text file written to server.");
        }
        else
        {
    
    
            Debug.LogError(request.error);
        }
    }

    public IEnumerator WriteTextFile(string url, List<账号信息> 所有账号信息)
    {
    
    
        StringBuilder builder = new StringBuilder();

        foreach (var item in 所有账号信息)
        {
    
    
            string data = item.账号 + "," + item.密码 + "," + item.结尾;
            builder.AppendLine(data);
        }

        string dataToSend = builder.ToString();

        UnityWebRequest request = UnityWebRequest.Put(url, dataToSend);

        yield return request.SendWebRequest();

        if (request.error == null)
        {
    
    
            Debug.Log("Text file written to server.");
        }
        else
        {
    
    
            Debug.LogError(request.error);
        }
    }

    private void 数据初始化()
    {
    
    
        所有的账号信息.Clear();
        所有的申请信息.Clear();

        StartCoroutine(读取账号信息文件(账号密码文件路径));
        StartCoroutine(读取申请信息文件(申请信息文件路径));
    }

    private void 注册申请按钮事件()
    {
    
    
        登录界面.SetActive(false);
        注册界面.SetActive(true);
        提示信息.text = "";
        登录注册按钮.transform.GetChild(0).GetComponent<Text>().text = "申请注册";
        返回按钮.gameObject.SetActive(true);
    }

    private void 登录注册按钮事件()
    {
    
    
        if (登录界面.activeSelf && !注册界面.activeSelf)
        {
    
    
            int i = 0;

            foreach (账号信息 单个账号信息 in 所有的账号信息)
            {
    
    
                if (单个账号信息.账号 == 登录界面账号.text && 单个账号信息.密码 != 登录界面密码.text)
                {
    
    
                    登录界面密码.text = "";
                    提示信息.text = "密码错误!";
                    i = -10;
                }
                else if (单个账号信息.账号 == 登录界面账号.text && 单个账号信息.密码 == 登录界面密码.text)
                {
    
    
                    if (单个账号信息.账号 == "root" && 单个账号信息.密码 == "123")
                    {
    
    
                        注册登录界面.SetActive(false);
                        管理界面.SetActive(true);
                        申请内容();
                    }
                    else
                    {
    
    
                        登录界面账号.text = "";
                        登录界面密码.text = "";
                        提示信息.text = "登录成功!";
                        i = -100;
                    }
                }

                i++;
            }
            if (i >= 所有的账号信息.Count)
            {
    
    
                登录界面账号.text = "";
                登录界面密码.text = "";
                提示信息.text = "账号不存在!";
            }
        }
        else if (!登录界面.activeSelf && 注册界面.activeSelf)
        {
    
    
            if (注册界面密码.text != 注册界面确认密码.text)
            {
    
    
                提示信息.text = "密码前后不一致!";
                注册界面密码.text = "";
                注册界面确认密码.text = "";
            }
            else
            {
    
    
                申请信息 申请账号 = new 申请信息();
                申请账号.申请时间 = DateTime.Now.ToString();
                申请账号.申请人 = 注册界面申请人.text;
                申请账号.账号 = 注册界面账号.text;
                申请账号.密码 = 注册界面确认密码.text;
                申请账号.审核状态 = "未审核";
                申请账号.结尾 = "end";
                所有的申请信息.Add(申请账号);
                StartCoroutine(WriteTextFile(申请信息文件路径, 所有的申请信息));
                注册界面账号.text = "";
                注册界面密码.text = "";
                注册界面确认密码.text = "";
                注册界面申请人.text = "";
                提示信息.text = "申请成功!请联系管理员审核...";
            }
        }
    }

    private void 返回按钮事件()
    {
    
    
        登录界面.SetActive(true);
        注册界面.SetActive(false);
        提示信息.text = "";
        登录界面账号.text = "";
        登录界面密码.text = "";
        登录注册按钮.transform.GetChild(0).GetComponent<Text>().text = "登录";
        返回按钮.gameObject.SetActive(false);
    }

    private void 申请内容()
    {
    
    
        //数据初始化();
        if (所有的申请信息.Count == 0)
        {
    
    
            Debug.Log("暂时没有人申请!");
            return;
        }
        foreach (申请信息 单个申请信息 in 所有的申请信息)
        {
    
    
            GameObject t = Instantiate(内容预制体);
            t.transform.SetParent(content.transform);
            t.transform.GetChild(0).GetChild(0).GetComponent<Text>().text = 单个申请信息.申请时间;
            t.transform.GetChild(1).GetChild(0).GetComponent<Text>().text = 单个申请信息.申请人;
            t.transform.GetChild(2).GetChild(0).GetComponent<Text>().text = 单个申请信息.账号;
            t.transform.GetChild(3).GetChild(0).GetComponent<Text>().text = 单个申请信息.密码;
            t.transform.GetChild(4).GetChild(0).GetComponent<Text>().text = 单个申请信息.审核状态;
        }
    }

    public void DestroyAllChildren()
    {
    
    
        // 遍历所有子物体并销毁它们
        foreach (Transform child in content.transform)
        {
    
    
            Destroy(child.gameObject);
        }

        // 等待所有子物体被销毁
        StartCoroutine(WaitForChildrenDestroyed());
    }

    private IEnumerator WaitForChildrenDestroyed()
    {
    
    
        // 等待一帧
        yield return null;

        // 检查子物体是否全部被销毁
        while (transform.childCount > 0)
        {
    
    
            // 等待一帧
            yield return null;
        }

        // 所有子物体已经被销毁,可以执行下一步操作了
        申请内容();
    }
}

public class 账号信息
{
    
    
    public string 账号;
    public string 密码;
    public string 结尾;
}

public class 申请信息
{
    
    
    public string 申请时间;
    public string 申请人;
    public string 账号;
    public string 密码;
    public string 审核状态;
    public string 结尾;
}

2. Audit 1.cs (mounted on the content prefab)

using Newtonsoft.Json;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
using UnityEngine.UI;

public class 审核1 : MonoBehaviour
{
    
    
    private Button 审核通过;

    private Button 审核不通过;

    private string name;

    // Start is called before the first frame update
    void Start()
    {
    
    
        审核通过 = transform.GetChild(5).GetChild(0).GetComponent<Button>();

        审核不通过 = transform.GetChild(5).GetChild(1).GetComponent<Button>();

        name = transform.GetChild(1).GetChild(0).GetComponent<Text>().text;

        审核通过.onClick.AddListener(审核通过事件);

        审核不通过.onClick.AddListener(审核不通过事件);
    }

    private void 审核通过事件()
    {
    
    
        申请信息 临时申请信息 = null;
        foreach (申请信息 单个申请信息 in 登录注册1.Instance.所有的申请信息)
        {
    
    
            if (name == 单个申请信息.申请人)
            {
    
    
                临时申请信息 = 单个申请信息;
                break;
            }
        }
        if (临时申请信息 != null)
        {
    
    
            账号信息 创建账号 = new 账号信息();
            创建账号.账号 = 临时申请信息.账号;
            创建账号.密码 = 临时申请信息.密码;
            创建账号.结尾 = "end";
            登录注册1.Instance.所有的账号信息.Add(创建账号);
            StartCoroutine(登录注册1.Instance.WriteTextFile(登录注册1.Instance.账号密码文件路径, 登录注册1.Instance.所有的账号信息));
            int index = 登录注册1.Instance.所有的申请信息.IndexOf(临时申请信息);
            申请信息 申请账号 = new 申请信息();
            申请账号.申请人 = 临时申请信息.申请人;
            申请账号.申请时间 = 临时申请信息.申请时间;
            申请账号.账号 = 临时申请信息.账号;
            申请账号.密码 = 临时申请信息.密码;
            申请账号.审核状态 = "审核通过";
            申请账号.结尾 = "end";
            登录注册1.Instance.所有的申请信息[index] = 申请账号;
            StartCoroutine(登录注册1.Instance.WriteTextFile(登录注册1.Instance.申请信息文件路径, 登录注册1.Instance.所有的申请信息));
            登录注册1.Instance.DestroyAllChildren();
        }
    }

    private void 审核不通过事件()
    {
    
    
        申请信息 临时申请信息 = null;
        foreach (申请信息 单个申请信息 in 登录注册1.Instance.所有的申请信息)
        {
    
    
            if (name == 单个申请信息.申请人)
            {
    
    
                临时申请信息 = 单个申请信息;
                break;
            }
        }
        if (临时申请信息 != null)
        {
    
    
            int index = 登录注册1.Instance.所有的申请信息.IndexOf(临时申请信息);
            申请信息 申请账号 = new 申请信息();
            申请账号.申请人 = 临时申请信息.申请人;
            申请账号.申请时间 = 临时申请信息.申请时间;
            申请账号.账号 = 临时申请信息.账号;
            申请账号.密码 = 临时申请信息.密码;
            申请账号.审核状态 = "审核不通过";
            申请账号.结尾 = "end";
            登录注册1.Instance.所有的申请信息[index] = 申请账号;
            StartCoroutine(登录注册1.Instance.WriteTextFile(登录注册1.Instance.申请信息文件路径, 登录注册1.Instance.所有的申请信息));
            登录注册1.Instance.DestroyAllChildren();
        }
    }
}

Guess you like

Origin blog.csdn.net/qq_44887198/article/details/130522897