Unity实现登录/注册/审核功能

这篇具有很好参考价值的文章主要介绍了Unity实现登录/注册/审核功能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、效果展示

unity 注册,Unity,unity,游戏引擎,c#

2、场景预览

unity 注册,Unity,unity,游戏引擎,c#文章来源地址https://www.toymoban.com/news/detail-818484.html

3、代码

1、登录注册1.cs(挂载在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、审核1.cs(挂载在内容预制体上)

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

到了这里,关于Unity实现登录/注册/审核功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity使用leancloud开发弱数据联网游戏(注册、登录和云端数据存读)

    最近,由于开发需要数据存储服务,就跑去Bmob看看,不看不要紧,发现自己以前创建的应用的数据存储服务居然变成非永久的了,只有一年的免费时间,而且还过期了。这对于我将要开发的软件时很不友好的;因此,我就只能去找与Bmob同类型的后端云服务,就是我接下来要

    2023年04月23日
    浏览(37)
  • 【Unity+MySQL】实现简单的注册登录系统

    确保这两个软件都能够在你的计算机上良好地运行。 镜像地址:http://mirrors.sohu.com/mysql/MySQL-8.0/ 下载完成后双击运行msi文件。 Next→ Next→ 选择自定义安装, Next→ 选择安装路径, Next→ Install安装, 安装完成,Finish。 此电脑→计算机→属性, 关于→高级系统设置, 高级→环

    2024年02月05日
    浏览(56)
  • 【Unity+MySQL】实现注册登录系统(封装版)

    接着 上篇文章的注册登录系统,这篇文章将MySQL相关操作封装,在Unity交互脚本中直接调用封装的方法。 编写一个DBConnector脚本,封装MySQL中常用的操作,如连接数据库、关闭数据库、查询数据库、除查询外的插入、更新、删除等操作。 编写一个User脚本用于封装用户注册、登

    2024年02月05日
    浏览(45)
  • 【Unity+MySQL】实现注册登录系统(升级版)

    接着 上篇文章所谈到的系统缺陷,这篇文章进行升级解决。 问题 :注册界面与登录界面是同一个界面,导致用户输入用户密码进行注册后,即可点击登录。 解决 :在同一个场景中分别创建注册界面和登录界面,使用SetActive控制注册/登录成功后UI的显示与隐藏。 整体的UI框

    2024年02月09日
    浏览(44)
  • Unity3D制作注册登录界面,并实现场景跳转

    效果预览图片: 效果预览视频: 一、新建项目工程 1、打开Unity3D,新建一个项目,将其命名为“Login”。我这里用的版本是Unity2018.4.2f1,不同版本制作过程中的界面可能稍有不同,但是不影响具体功能的实现。 2、可以将样例场景SampleScene重命名为Login,最好做到见名知意。

    2024年02月03日
    浏览(76)
  • Unity3D实现登陆注册功能,实现本地存储读取

    untiy登录注册功能的实现,可以永久本地存储。C#源代码,也可以用相同的办法存储读取玩家的其他信息或自定义的游戏设置 实现了判断用户名是否存在,密码是否前后一致,密码是否正确等。 这是注册界面功能 以下是登录页功能      

    2024年02月13日
    浏览(44)
  • 基于Unity客户端与服务端实现登录与注册以及多人在线聊天

    1.在Unity下,创建一个GameManager空对象,用于启动客户端连接以及实例化一个登录页面LoginView的Prefab,并将脚本LoginView挂载在上面。 2.创建一个Client类,用于客户端向服务端发起连接请求,并且发送给服务端消息以及接收服务端的响应 3.创建一个脚本LoginView挂载在LoginView对象上

    2024年04月16日
    浏览(49)
  • 【Unity3D】如何用使用Unity实现退出游戏的功能

    1、使用Unity编译器时: 2、打包后: 很多时候,我们都知道Application.Quit()代码,但是我们在Unity编译器调试的时候发现即使挂上了这个代码的组件或物体都无法退出编译,因为该代码只在打包后可以实现退出功能。 所以我们可以把两个实现代码同时写入脚本,这样既可以在编

    2024年02月11日
    浏览(71)
  • 【毕业论文】| 基于Unity3D引擎的冒险游戏的设计与实现

    📢博客主页:肩匣与橘 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📢本文由 肩匣与橘 编写,首发于 CSDN 🙉 📢生活依旧是美好而又温柔的,你也是✨  基于Unity3D引擎的冒险游戏的设计与实现 📢前言 摘要 Abstract 1 绪论 1.1 选题背景 1.2 研究目的及意义 2 开发工具

    2024年02月05日
    浏览(62)
  • 【unity3D】退出游戏功能的实现

    💗 未来的游戏开发程序媛,现在的努力学习菜鸡 💦本专栏是我关于游戏开发的学习笔记 🈶本篇是unity的退出游戏功能的实现 新建一个button按钮,在Hierachy面板点击右键,然后UI—Button。 调节Button位置和Button下面Text文本的内容和大小。 新建一个脚本 新建一个空物体,然后

    2024年02月11日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包