Unity实现账号登录,注册功能

制作了用户登录界面

 关于弹窗使用了DOTween插件,实现渐隐渐显效果。

关于账号使用了本地Json读取,

默认账号:YSQS/YSQS1

密码:admin/admin1

注册功能其实应该重构的因为有二次读流的问题存在。

账号注册加入了邀请码(其实就一个if)

 接下来就是我那臭死了的源码。

GameState类

using System;
using Framework.L;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;public class GameState : MonoBehaviour
{[SerializeField] public Text ID;//账号[SerializeField] public InputField Cryptogram;//密码[SerializeField] public Button Login;//登录[SerializeField] public Button Enroll;//注册[SerializeField] public GameObject EnrollUI;//注册UI[SerializeField] public Button ESC;//注册UI关闭[SerializeField] public InputField InvitationCode;//邀请码[SerializeField] public Text EnrollID;//注册账号[SerializeField] public InputField EnrollCryptogram;//注册密码[SerializeField] public Button Confirm_btn;//注册确定[SerializeField] public GameObject HintUI;//弹窗[SerializeField] public Button ESCBUT;[SerializeField] public Text Time;/// <summary>/// 用户登录/// </summary>void UserDataRegister(){string id = ID.text;string cryptogram = Cryptogram.text;if (ID.text != ""){if (Cryptogram.text != ""){if (UserData.DicAppDataItems.ContainsKey(id)){if ( UserData.DicAppDataItems.ContainsValue(cryptogram)&&UserData.DicAppDataItems[id]==cryptogram){   User.PopUpWindows(HintUI,true,"登录成功");}else{User.PopUpWindows(HintUI,true,"密码输入错误!!!请重新输入");}}else{User.PopUpWindows(HintUI,true,"该账号不存在,请先注册账号");}}else{User.PopUpWindows(HintUI,true,"请检查密码");}}else{User.PopUpWindows(HintUI,true,"账号不能为空");}}/// <summary>/// 用户注册界面/// </summary>void UserEnroll(){string id = EnrollID.text;string cryptogram = EnrollCryptogram.text;if (InvitationCode.text == "LPH"){if (EnrollID.text!=""){if (EnrollCryptogram.text!=""){User.AddData(id,cryptogram);User.PopUpWindows(HintUI,true,"注册成功");
#if UNITY_EDITORUnityEditor.EditorApplication.isPlaying = false;
#endifApplication.Quit();}else{User.PopUpWindows(HintUI,true,"密码不能为空");}}else{User.PopUpWindows(HintUI,true,"账号不能为空");}}else{User.PopUpWindows(HintUI,true,"邀请码错误");Debug.Log("邀请码错误");}}private void Start(){Login.onClick.AddListener(UserDataRegister);Enroll.onClick.AddListener(delegate{EnrollUI.gameObject.SetActive(true);});ESC.onClick.AddListener(delegate{EnrollUI.gameObject.SetActive(false);});Confirm_btn.onClick.AddListener(UserEnroll);ESCBUT.onClick.AddListener(delegate{
#if UNITY_EDITORUnityEditor.EditorApplication.isPlaying = false;
#endifApplication.Quit();});}private void Awake(){User.UsersLoginData();}private void Update(){Time.text = DateTime.Now.Year.ToString() + "年" + DateTime.Now.Month.ToString() + "月" + DateTime.Now.Day.ToString() + "日" +DateTime.Now.Hour.ToString() + ":" + DateTime.Now.Minute.ToString() + ":" + DateTime.Now.Second.ToString();}
}
啊,忘了说了还有一个本地时间显示

 

Time.text = DateTime.Now.Year.ToString() + "年" + DateTime.Now.Month.ToString() + "月" + DateTime.Now.Day.ToString() + "日" +DateTime.Now.Hour.ToString() + ":" + DateTime.Now.Minute.ToString() + ":" + DateTime.Now.Second.ToString();
User类
using System.Collections.Generic;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
using BestHTTP.JSON.LitJson;
using DG.Tweening;
using Framework.L;
using UnityEditor.Timeline.Actions;
using UnityEngine;
using UnityEngine.UI;public class User
{  #region 登录/// <summary>/// 用户信息集合存储/// </summary>public static Root _Root;/// <summary>/// 将用户信息存入字典/// 利用字典来进行判断用户信息/// </summary>public static void UsersLoginData(){JsonReader js = new JsonReader(UserData.streamreader);//转换成json数据Root root = JsonMapper.ToObject<Root>(js);Dictionary<string, string> dicdataitems = new Dictionary<string, string>();//存入字典for (int i = 0; i < root.Data.Count; i++){DataItem dataItem = new DataItem();dataItem.ID = root.Data[i].ID;dataItem.Cryptogram = root.Data[i].Cryptogram;dicdataitems.Add(dataItem.ID,dataItem.Cryptogram);}_Root = root;UserData.DicAppDataItems = dicdataitems;UserData.streamreader.Close();//关闭文件UserData.streamreader.Dispose();//释放内存}/// <summary>/// 判断用户信息"已弃用"/// </summary>/// <param name="id">账号</param>/// <param name="cryptogram">密码</param>public static void UsersLogin(string id,string cryptogram){if (id != ""){if ( UserData.DicAppDataItems.ContainsKey(id)){if ( UserData.DicAppDataItems.ContainsValue(cryptogram)&&UserData.DicAppDataItems[id]==cryptogram){   Debug.Log("登录成功");}else{Debug.Log("密码输入错误!!!请重新输入");}}else{Debug.Log("该账号不存在,请先注册账号");}}else{Debug.Log("账号不能为空");}}#endregion#region 注册/// <summary>/// 增加用户数据/// </summary>/// <param name="id">账号</param>/// <param name="cryptogram">密码</param>public static void AddData(string id, string cryptogram){DataItem dataItem = new DataItem();dataItem.ID = id;dataItem.Cryptogram = cryptogram;_Root.Data.Add(dataItem);//注册内容控制台显示string jsonData = JsonMapper.ToJson(_Root); //将注册信息转换为Json字符串Debug.Log("内容 " + jsonData);//存入JsonFile.WriteAllText(UserData.path, JsonMapper.ToJson(_Root));Debug.Log("注册成功");}#endregion#region 弹窗// 弹窗提示渐隐动画public static void PopUpWindows(GameObject gameObject, bool state,string text){gameObject.gameObject.SetActive(state);Sequence popupWindows = DOTween.Sequence();Sequence popupWindows1 = DOTween.Sequence();gameObject.transform.GetChild(0).GetComponent<Text>().text = text;popupWindows1.Append(gameObject.transform.Find("Text").GetComponent<Text>().DOFade(1, 1));popupWindows.Append(gameObject.transform.GetComponent<Image>().DOFade(1, 1));popupWindows.Append(gameObject.transform.GetComponent<Image>().DOFade(0, 1F));popupWindows1.Append(gameObject.transform.Find("Text").GetComponent<Text>().DOFade(0, 1F));float timeCount = 10f;DOTween.To(() => timeCount, a => timeCount = a, 1f, 2f).OnComplete(() =>{//延时后的操作gameObject.gameObject.SetActive(false);});}#endregion}
UserData类
using System;
using System.Collections.Generic;
using System.IO;
using UnityEngine;namespace Framework.L
{   public class UserData{/// <summary>/// 包含所有用户信息的 字典/// </summary>public static Dictionary<string, string> DicAppDataItems = new Dictionary<string, string>();/// <summary>/// 用户信息路径/// </summary>public static string path = Application.streamingAssetsPath + "/Userinfo.json";/// <summary>/// 读取数据,转换成数据流/// </summary>public static readonly StreamReader streamreader =new StreamReader(path); }[Serializable]public class DataItem{/// <summary>/// 账号/// </summary>public string ID { get; set; }/// <summary>/// 密码/// </summary>public string Cryptogram { get; set; }}public class Root{/// <summary>/// 用户信息集合/// </summary>public List <DataItem > Data { get; set; }}
}

其实想加一个天气预报的,但API.....哎,我加油吧,这代码越看越臭.....哎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/51679.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2022年MathorCup A题资料汇总

今年MathorCup比赛共四个题&#xff0c;其中研究生组只能选A,B&#xff0c;其他组别四个题目选择没有限制。比赛一共四天&#xff0c;时间适中&#xff0c;因此对于大家选题&#xff0c;构建思路&#xff0c;建立模型&#xff0c;论文写作时间都会较为宽裕。我认为较为合理的时…

2023mathorcupA题B题C题D题思路

大家好呀&#xff0c;mathorcup开赛了&#xff0c;题目已经发布&#xff0c;我会在本文章进行实时的更新&#xff0c;首先进行选题建议及初步的思路。 个人角度而言&#xff0c;本次题目难度上&#xff1a; 研究生组中&#xff0c;B&#xff1c;A&#xff0c;本科生组中&…

2020年mathorcup数模A题总结回顾

记录一下研究生第一次参加数模的心路和思路历程 比赛时间&#xff1a; 5月21日8&#xff1a;00-5月25日9&#xff1a;00 赛前准备&#xff1a; 本科期间只参加过校级比赛&#xff0c;数模基础很差。疫情结束返校是5月17日&#xff0c;所以这次比赛属于边赛边准备&#xff0…

怎么利用计算机出数学卷子,怎样在电脑中编写数学试卷?

2018-11-03 什么时候运用条形统计图,复式条形统计图,单式折线统计图 概念&#xff1a;是利用点、线、面、体等绘制成几何图形&#xff0c;以表示各种数量间的关系及其变动情况的工具。 表现统计数字大小和变动的各种图形总称。其中有条形统计图、扇形统计图、折线统计图、象形图…

如何快速剪辑每段视频,添加多种特效

怎么给视频添加特效呢&#xff1f;有时候我们需要对一段或者多段视频进行简单的剪辑&#xff0c;比如添加光晕效果、渐入效果、随机转场等&#xff0c;该如何实现呢&#xff1f;下面随小编一起来试试&#xff0c;希望能给大家带来帮助。 需要哪些工具&#xff1f; 视频剪辑高手…

moviepy音视频开发:使用credits1给视频加片头片尾字幕

☞ ░ 前往老猿Python博文目录 ░ 一、概述 在《moviepy音视频剪辑&#xff1a;视频基类VideoClip子类DataVideoClip、UpdatedVideoClip、ImageClip、ColorClip、TextClip类详解》介绍了TextClip生成文本剪辑的方法&#xff0c;文本剪辑可以用于制作字幕&#xff0c;作为片头…

如何做短视频剪辑?分享三个小技巧,帮你迅速剪辑短视频

如何做短视频剪辑&#xff1f;分享三个小技巧&#xff0c;帮你迅速剪辑短视频 我们在做短视频的时候&#xff0c;经常需要进行剪辑&#xff0c;有的人就是单纯的剪辑出来几秒钟或者几分钟的素材&#xff0c;但是这种短视频是很难获得流量的。真正的短视频剪辑&#xff0c;还需…

剪映,最简单的PC端视频处理工具,大厂出品必属精品~

相信在座的小伙伴都用过抖音app&#xff0c;看的多了难免也有想要发视频的冲动。 这时我们就会想到诸如Ae、Pr之类的视频制作工具&#xff0c;但他们都有一定的上手难度…… 好在抖音霸霸很早就推出了免费的官方全能剪辑工具&#xff0c;也就是剪映。说实话&#xff0c;剪映使…

短视频剪辑怎么做?分享几款好用的软件工具给大家

近几年来短视频应用发展迅速&#xff0c;抖音、快手等平台已快速获取数亿用户&#xff0c;大量新人不断涌入短视频赛道发展。人人都想做自媒体&#xff0c;可是又不知道如何去做。今天张三火了&#xff0c;明天李四又火了&#xff0c;我什么时候也可以靠自媒体赚钱呀&#xff1…

视频拼接剪辑怎么弄?分享三个小妙招给你们

近期有很多朋友都在问我&#xff0c;自己录了几段视频&#xff0c;想把它们拼接起来&#xff0c;但又怕随意拼接会让视频看起来不连贯、混乱。其实将视频自然拼接起来非常简单&#xff0c;只需要借助软件就可以轻松完成这样的操作。下面我就来分享好用的视频拼接免费软件给你们…

新手如何写新闻稿?一文带你了解记者稿的写作步骤与技巧

作为一名新手记者&#xff0c;写稿件是必须掌握的基本技能。记者稿的写作方式有很多种&#xff0c;但基本的步骤和技巧是相同的。在这篇文章中&#xff0c;我将向大家介绍记者稿的写作步骤和技巧&#xff0c;希望能对想要成为一名优秀记者的你有所帮助。 一、确定新闻价值 在写…

进行海外媒体发稿的稿件撰写技巧和方法

第 1 步&#xff1a;目标受众 在您开始撰写实际的外媒通稿之前&#xff0c;最重要的事情是选择对目标受众重要的角度。 请记住&#xff0c;专业杂志的读者感兴趣的角度&#xff08;换句话说&#xff0c;故事将采取的视角&#xff09;与当地报纸会有很大的不同。事实上&#x…

英伟达CEO黄仁勋对话OpenAI首席科学家,谈GPT-4及未来大模型

来源&#xff1a;机器之心 在今年的 GTC 上&#xff0c;NVIDIA 创始人兼首席执行官黄仁勋与 OpenAI 联合创始人、首席科学家 Ilya Sutskever 进行了一场深度对话&#xff0c;讨论了 GPT-4、ChatGPT 背后的故事&#xff0c;也聊了下深度学习的未来。 如今&#xff0c;OpenAI 可以…

震惊!英伟达 4 月的发布会全部是合成的

本文转载自IT之家 8 月 12 日消息 英伟达今年 4 月份那场发布会&#xff0c;你曾看出什么不对劲的地方吗&#xff1f; 你品&#xff0c;你细品&#xff1a; 刚刚&#xff0c;在计算机图形学顶会 SIGGRAPH 2021 上&#xff0c;英伟达通过一部纪录片自曝&#xff1a;那场发布会…

最「难搞」的英伟达也开源了,下一个会是谁?

5 月 11 日&#xff0c;英伟达 NVIDIA 发文宣布&#xff0c;正式将其 Linux GPU 内核驱动模块开源&#xff0c;以 MIT 和 GPLv2 双许可的形式发布在 GitHub 上。短短 2 天&#xff0c;该项目已收获 8.6k Star&#xff08;临发布前又涨了 200&#xff09;。 开源的消息一出&…

微软提出AIGC新“玩法”,图灵奖得主Yoshua Bengio也来了!

在AIGC取得举世瞩目成就的背后&#xff0c;基于大模型、多模态的研究范式也在不断地推陈出新。微软研究院作为这一研究领域的佼佼者&#xff0c;与图灵奖得主、深度学习三巨头之一的Yoshua Bengio一起提出了AIGC新范式——Regeneration Learning。这一新范式究竟会带来哪些创新…

【AI 简报20201018期】英伟达开源「Imaginaire」、智能手表争夺战是如何打响的?

导读&#xff1a;本期为 AI 简报 20201018期&#xff0c;将为您带来过去一周关于 AI 新闻 9 条&#xff0c;其他互联网圈内新闻 8 条&#xff0c;希望对您有所帮助~ 有更好的建议或者意见请在下方留言~ AI 1. 图神经网络新课上架&#xff1a;宾大2020秋季在线课程开课&#xff…

英伟达 CEO 黄仁勋分享人工智能的五大应用场景

3 月 21 日&#xff0c;英伟达 CEO 黄仁勋在 GTC 2023 上分享了人工智能的五大应用场景&#xff0c;生成式AI 、科学计算赫然在列。 ☞英特尔首席架构师&#xff0c;GPU 大牛 Raja Koduri 突然离职&#xff0c;开启 AI 创业 ☞GPT-4 挑战当老板&#xff0c;目标&#xff1a;用 …

继推出首个元宇宙平台后,英伟达CEO黄仁勋又获半导体行业最高荣誉

8 月 12 日&#xff0c;美国半导体行业协会&#xff08;SIA&#xff09;宣布&#xff0c; 将授予英伟达&#xff08;NVIDIA&#xff09;创始人兼 CEO 黄仁勋罗伯特诺伊斯奖&#xff08;Robert N. Noyce Award&#xff09;。 诺伊斯奖由 SIA 每年颁发一次&#xff0c;用以表彰在…