1、效果展示
文章来源:https://www.toymoban.com/news/detail-818484.html
2、场景预览
文章来源地址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模板网!