Unity利用XML制作一個(gè)簡(jiǎn)易的登錄系統(tǒng)
通過XML文件保存賬號(hào)密碼,存儲(chǔ)到本地,不連接數(shù)據(jù)庫(kù)的簡(jiǎn)易登錄系統(tǒng)。
1.創(chuàng)建一個(gè)XML文件,設(shè)置一個(gè)初始的賬號(hào)密碼。
public void Creat()
{
localPath = UnityEngine.Application.streamingAssetsPath + "/" + "MyXML.xml";
if (!File.Exists(localPath))
{
XmlDocument xml = new XmlDocument();
XmlDeclaration xmldecl = xml.CreateXmlDeclaration("1.0", "UTF-8", "");//設(shè)置xml文件編碼格式為UTF-8
XmlElement root = xml.CreateElement("Data");//創(chuàng)建根節(jié)點(diǎn)
XmlElement info = xml.CreateElement("Info");//創(chuàng)建子節(jié)點(diǎn)
info.SetAttribute("賬號(hào)", "admin");//創(chuàng)建子節(jié)點(diǎn)屬性名和屬性值
info.SetAttribute("密碼", "123123");
root.AppendChild(info);//將子節(jié)點(diǎn)按照創(chuàng)建順序,添加到xml
xml.AppendChild(root);
xml.Save(localPath);//保存xml到路徑位置
Debug.Log("創(chuàng)建XML成功!");
}
}
2.讀取XML文件,將賬號(hào)密碼存儲(chǔ)到列表數(shù)組中。每次讀取的時(shí)候需要把index的值設(shè)置成0,重新錄入賬號(hào)密碼,不然會(huì)出現(xiàn)一個(gè)賬號(hào)密碼保存兩次的問題。
void ReadXML()
{
localPath = UnityEngine.Application.streamingAssetsPath + "/" + "MyXML.xml";
if (File.Exists(localPath))
{
XmlDocument xml = new XmlDocument();
xml.Load(localPath);//加載xml文件
XmlNodeList nodeList = xml.SelectSingleNode("Data").ChildNodes;
MimaZu = nodeList.Count;
foreach (XmlElement xe in nodeList)
{//遍歷所以子節(jié)點(diǎn)
if (xe.Name == "Info")
{
Debug.Log(xe.GetAttribute("賬號(hào)"));//獲取Name屬性值
Debug.Log(xe.GetAttribute("密碼"));
messages[index].vs.Add(xe.GetAttribute("賬號(hào)"));
messages[index].vs.Add(xe.GetAttribute("密碼"));
index += 1;
//messages.Add(new string[] { xe.GetAttribute("賬號(hào)"), xe.GetAttribute("密碼") });
//Debug.Log(vs);
}
}
Debug.Log("讀取XML成功!" + xml.OuterXml);
}
}
3.列表數(shù)組的創(chuàng)建
public Message[] messages;
//這個(gè)放在外面
[System.Serializable]
public class Message
{
public List<string> vs = new List<string>();
}
4.添加賬號(hào)密碼
public void AddXML(string zhanghao, string mima)
{
localPath = UnityEngine.Application.streamingAssetsPath + "/" + "MyXML.xml";
if (File.Exists(localPath))
{
XmlDocument xml = new XmlDocument();
xml.Load(localPath);//加載xml文件
XmlNode root = xml.SelectSingleNode("Data");//獲取根節(jié)點(diǎn)
XmlElement info = xml.CreateElement("Info");//創(chuàng)建新的子節(jié)點(diǎn)
info.SetAttribute("賬號(hào)", zhanghao);//創(chuàng)建新子節(jié)點(diǎn)屬性名和屬性值
info.SetAttribute("密碼", mima);
root.AppendChild(info);//將子節(jié)點(diǎn)按照創(chuàng)建順序,添加到xml
xml.AppendChild(root);
xml.Save(localPath);//保存xml到路徑位置
Debug.Log("添加XML成功!");
}
}
5.判斷賬號(hào)密碼是否正確,登錄的時(shí)候判斷IsLogin的值,如果IsLogin的值為false就是登錄失敗,如果值為True就是登錄成功
public bool IsLogin;
public Message[] messages;
/// <summary> /// 賬號(hào)密碼個(gè)數(shù) /// </summary>
/// <summary>
/// 判斷賬號(hào)密碼是否正確
/// </summary>
public void Login()
{
for (int i = 0; i < MimaZu; i++)
{
int index = i;
if (ZhangHao.text == messages[index].vs[0] && Mima.text == messages[index].vs[1])
{
if (messages[index].vs[0] == null)
return;
if (messages[index].vs[1] == null)
return;
IsLogin = true;
return;
}
else if (ZhangHao.text != messages[index].vs[0] && Mima.text != messages[index].vs[1])
{
IsLogin = false;
}
}
}到此這篇關(guān)于Unity利用XML制作一個(gè)簡(jiǎn)易的登錄系統(tǒng)的文章就介紹到這了,更多相關(guān)Unity XML登錄系統(tǒng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C# Winform 禁止用戶調(diào)整ListView的列寬
在使用 ListView 的時(shí)候, 有時(shí)我們不想讓別人隨意調(diào)整列寬, 或者某幾列的列寬, 以便達(dá)到美觀, 或者隱藏?cái)?shù)據(jù)的作用. 那么可以用一下代碼來實(shí)現(xiàn)2011-05-05
C# Stream 和 byte[] 之間的轉(zhuǎn)換
Stream 和 byte[] 之間的轉(zhuǎn)換2008-03-03
詳解C# 利用反射根據(jù)類名創(chuàng)建類的實(shí)例對(duì)象
這篇文章主要介紹了詳解C# 利用反射根據(jù)類名創(chuàng)建類的實(shí)例對(duì)象,“反射”其實(shí)就是利用程序集的元數(shù)據(jù)信息,感興趣的小伙伴們可以參考一下。2017-03-03
利用C#實(shí)現(xiàn)分布式數(shù)據(jù)庫(kù)查詢
利用C#實(shí)現(xiàn)分布式數(shù)據(jù)庫(kù)查詢...2007-03-03
C#使用Win32?Api實(shí)現(xiàn)進(jìn)程注入到wechat的過程
這篇文章主要介紹了C#使用Win32?Api實(shí)現(xiàn)進(jìn)程注入到wechat,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-09-09
C#中把日志導(dǎo)出到txt文本的簡(jiǎn)單實(shí)例
這篇文章介紹了C#中把日志導(dǎo)出到txt文本的簡(jiǎn)單實(shí)例,有需要的朋友可以參考一下2013-10-10

