Unity简单登录功能的实现(附资源包)

server/2024/12/16 5:09:11/

项目说明 (一共就用到一个脚本,带有项目默认账号(可以自定义),也有玩家登录过后存到本地的账号(注册过后才有))

添加场景的方法 

脚本 

using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;public class LogManage : MonoBehaviour
{[Header("两个面板")]public GameObject loginPanel;//登录面板public GameObject registerPanel;//注册面板[Header("四个按钮")]public Button loginBtn;//登录按钮public Button goregisterBtn;//跳转到注册界面按钮public Button backBtn;//返回按钮public Button registerBtn;//注册按钮[Header("登录面板的两个输入框")]public InputField useridInput;//用id输入框public InputField passwordInput;//密码输入框[Header("注册面板的两个输入框")]public InputField setuseridInput;//设置id输入框public InputField setpasswordInput;//设置密码输入框//在场景中输入要跳转的场景的名字//不输入就不会跳转[SerializeField] private string Scenenameext;//登录画布//可以选择登录成功后影藏登录画布//默认情况登录成功影藏画布[SerializeField] private GameObject loginCanvas;//提示面板public GameObject tipPanel;void Start(){loginBtn.onClick.AddListener(Login);goregisterBtn.onClick.AddListener(goRegister);backBtn.onClick.AddListener(Back);registerBtn.onClick.AddListener(Register);}void Login(){string userid = useridInput.text;string password = passwordInput.text;// 使用 Resources.Load 来读取文件内容string filePathtext = "PlayerLogin/Login";TextAsset loginfile = Resources.Load<TextAsset>(filePathtext);//先查找默认账号有木有玩家的数据if (loginfile != null){string str = loginfile.text;// 在这里可以添加逻辑验证 userid 和 password 是否与 str 相匹配string[] str1 = str.Split('\n');//第一次分割for (int i = 0; i < str1.Length; i++){string[] str2 = str1[i].Split(':');if (str2[0] == userid && str2[1] == password){Debug.Log("登录成功!");//****************登录成功的逻辑*****************if (Scenenameext != ""){SceneManager.LoadScene(Scenenameext); //跳转到指定场景Debug.Log("你还没有指定跳转场景!");}else //如果没设置跳转场景的名字默认影藏画布{loginCanvas.SetActive(false); //登录成功后影藏登录画布}break;}else if (str2[0] == userid && str2[1] != password) {Debug.Log("密码错误");//提示面板的显示tipPanel.SetActive(true);tipPanel.gameObject.transform.Find("Tipsimage/Tipstxt").GetComponent<Text>().text = "密码错误";Invoke("closetip", 2f);break;}else{if (i == str1.Length - 1){//这里遍历本地账号看有木有玩家string content = "PlayerLogin";string[] str3 = File.ReadAllLines(Application.persistentDataPath + "/" + content + "/" + "Login.txt");for (int j = 0; j < str3.Length; j++){string[] str4 = str3[j].Split(':');if (str4[0] == userid && str4[1] == password){Debug.Log("登录成功!");//****************登录成功的逻辑*if (Scenenameext != ""){SceneManager.LoadScene(Scenenameext); //跳转到指定场景Debug.Log("你还没有指定跳转场景!");}else //如果没设置跳转场景的名字默认影藏画布{loginCanvas.SetActive(false); //登录成功后影藏登录画布}break;}else if (str4[0] == userid && str4[1] != password){Debug.Log("密码错误");//提示面板的显示tipPanel.SetActive(true);tipPanel.gameObject.transform.Find("Tipsimage/Tipstxt").GetComponent<Text>().text = "密码错误";Invoke("closetip", 2f);break;}else if(j== str3.Length-1){Debug.Log("该账号不存在");//提示面板的显示tipPanel.SetActive(true);tipPanel.gameObject.transform.Find("Tipsimage/Tipstxt").GetComponent<Text>().text = "该账号不存在";Invoke("closetip", 2f);}}}}}}else{Debug.LogError("登录文件未找到!");}}void goRegister(){//跳转到注册界面loginPanel.SetActive(false);registerPanel.SetActive(true);//清空输入框setuseridInput.text = "";setpasswordInput.text = "";}void Back(){//返回登录界面loginPanel.SetActive(true);registerPanel.SetActive(false);}void Register(){//注册逻辑string userid = setuseridInput.text;string password = setpasswordInput.text;//判断是不是默认账号string filePathtext = "PlayerLogin/Login";TextAsset loginfile = Resources.Load<TextAsset>(filePathtext);//检测本地账号文本是否存在string content = "PlayerLogin";if (!File.Exists(Application.persistentDataPath + "/" + content + "/" + "Login.txt"))//路径存在后创建数据文本(如果没找到的话){Directory.CreateDirectory(Application.persistentDataPath + "/" + content);//这是一个双重保险string filePath0 = Application.persistentDataPath + "/" + content + "/" + "Login.txt";//这里换成对应文件位置string content2 = "玩家账号:玩家密码"+"\n";File.WriteAllText(filePath0, content2);//Debug.Log("测试文本写入成功");}string str = loginfile.text;Debug.Log(str); // 输出文件内容//判断玩家注册的账号是不是默认账号string[] str1 = str.Split('\n');//第一次分割for (int i = 0; i < str1.Length; i++){string[] str2 = str1[i].Split(':');if (str2[0] == userid){Debug.Log("该账号已被注册!");//提示面板的显示tipPanel.SetActive(true);tipPanel.gameObject.transform.Find("Tipsimage/Tipstxt").GetComponent<Text>().text = "该账号已被注册!";Invoke("closetip", 2f);break;}else if (i == str1.Length - 1){//这里遍历本地账号看有木有玩家string[] str3 = File.ReadAllLines(Application.persistentDataPath + "/" + content + "/" + "Login.txt");for (int j = 0; j < str3.Length; j++){string[] str4 = str3[j].Split(':');if (str4[0] == userid){Debug.Log("该账号已被注册!");//提示面板的显示tipPanel.SetActive(true);tipPanel.gameObject.transform.Find("Tipsimage/Tipstxt").GetComponent<Text>().text = "该账号已被注册!";Invoke("closetip", 2f);break;}else if (j == str3.Length - 1){//注册成功Debug.Log("注册成功!");//提示面板的显示tipPanel.SetActive(true);tipPanel.gameObject.transform.Find("Tipsimage/Tipstxt").GetComponent<Text>().text = "注册成功!";Invoke("closetip", 2f);//写入本地文件string filePath = Application.persistentDataPath + "/" + content + "/" + "Login.txt";string content1 = userid + ":" + password + "\n";File.AppendAllText(filePath, content1);Debug.Log("玩家数据写入成功");//跳转到登录界面loginPanel.SetActive(true);//自动将账号和密码填进去useridInput.text = setuseridInput.text;passwordInput.text = setpasswordInput.text;registerPanel.SetActive(false);break;}}}}}void closetip(){tipPanel.SetActive(false);}
}

 

资源包GitHub - laozhupeiqia/Simplelogin 

 


http://www.ppmy.cn/server/150537.html

相关文章

C# 特性 学习理解记录

在类或函数上一行[xxx], 查看源码是 xxxAttribute 比如 NUnit 的单元测试 [Test]特性&#xff0c; public class TestAttribute : NUnitAttribute, ISimpleTestBuilder, IApplyToTest, IImplyFixture&#xff0c; 可以在vs里测试》测试资源管理器》选中标注特性的函数进行单…

25考研软件工程 西南大学跟重庆大学哪个难?

需知晓&#xff0c;西南大学每年报考人数众多&#xff0c;可这不代表报考软件工程专业的人数就多呀&#xff0c;况且西南大学的优势学科并非工科&#xff0c;故而软件工程的报考热度不会如题主所言那般高呢。 其次得明白&#xff0c;软件工程专业上岸难度方面&#xff0c;重庆大…

postgresql使用 ST_PointFromText(“POINT()“, 4326)时字段 出现“POINT()“ 不存在SQL 状态: 42703

错误提示“字段 POINT(115.8 28.72) 不存在”通常是因为 SQL 语句中存在语法错误。在 SQL 语句中&#xff0c;ST_PointFromText 函数的参数应该是一个字符串&#xff0c;而直接将 POINT(115.8 28.72) 作为字段名使用&#xff0c;这是不正确的。正确的做法是将点的坐标作为字符串…

Nmap使用总结

0X00 背景 nmap是测试中常用的网络探测工具&#xff0c;但是这回简单的操作&#xff0c;一直了解不深入&#xff0c;现在深入的了解和学习一下。 在文章结构上&#xff0c;我把平时常用的内容提前了&#xff0c;以便再次查阅的时候&#xff0c;比较方便。 0X01 安装 nmap可…

如何在 Ubuntu 22.04 上安装和使用 Apache Kafka

简介 Apache Kafka是一个高性能、低延迟的分布式流处理平台&#xff0c;广泛用于构建实时数据管道和流式应用。本文将指导你如何在Ubuntu 22.04系统上快速部署Apache Kafka&#xff0c;让你体验到Kafka在处理大规模实时数据流方面的强大能力。通过本教程&#xff0c;你将学会如…

最新消息!ChatGPT已集成到苹果操作系统!

12月11日&#xff0c;OpenAI宣布ChatGPT将集成到苹果iOS、iPadOS和macOS操作系统中&#xff0c;用户可以直接在这些设备上访问ChatGPT的功能。 通过此次宣布内容来看&#xff0c;ChatGPT不再局限于单独的应用程序&#xff0c;用户可以在苹果设备上更便捷地使用它。这意味着&…

Acwing 算法基础课 数学知识 线性筛

线性筛素数 也叫欧拉筛。 int pr[maxn]; bool flg[maxn]; int main() {for (int i 2; i < maxn; i) {if (!flg[i]) pr[pr[0]] i;for (int j 1; i * pr[j] < n && j < pr[0]; j) {flg[i * pr[j]] 1;if (i % pr[j] 0) break; // 重点}} }这样筛的话&…

ubuntu24.04部署单节点kafka_2.13-3.8.1

ubuntu24.04部署单节点kafka_2.13-3.8.1 下载地址推荐使用清华镜像源下载 https://mirrors.tuna.tsinghua.edu.cn/apache/kafka/3.8.1/kafka_2.13-3.8.1.tgz 部署kafka部署 # 解压kafka压缩包 sudo tar -zxvf kafka_2.13-3.8.1.tgz -C /usr/local/# 改变权限及所有权 sudo ch…