使用Json持久化实现简单的用户登录
话不多说 直接上代码
//单例模式
public class JsonLogin
{
private static JsonLogin instance;
public static JsonLogin GetInstance()
{
if (instance==null)
{
instance = new JsonLogin();
}
return instance;
}
//此属性用于返回一个持久化数据存储目录的路径,可以在此路径下存储一些持久化的数据文件。
string Path = Application.persistentDataPath + "data.txt";
Items us;
public void Init()
{
if (File.Exists(Path))//是否有此文件
{
string Str = File.ReadAllText(Path);//读取txt文件
us = JsonUtility.FromJson<Items>(Str);//解析Items类
}
else
{
us = new Items();//初始值
}
}
public void Login(string id,string name)
{
for (int i = 0; i < us.itemInfo.Count; i++)
{
if (us.itemInfo[i].ID==name&&us.itemInfo[i].Name==name)
{
Debug.Log("登陆成功");
//存储数据
string jsonStr = JsonUtility.ToJson(us);
File.WriteAllText(Path, jsonStr);
return;
}
else
{
Debug.Log("登录失败");
}
}
}
public void Register(string id,string name)
{
Item i = new Item(id, name);
us.itemInfo.Add(i);
}
}
public class Items
{
public List<Item> itemInfo = new List<Item>();
}
[System.Serializable]//序列化
public class Item
{
public string ID;
public string Name;
public Item(string id,string name)
{
this.ID = id;
this.Name = name;
}
}
-----------------------------------------------------------------------------------------调用
public class JsonText : MonoBehaviour
{
private InputField id;
private InputField password;
private Button Login;
private Button Register;
private void Awake()
{
id = GameObject.Find("ID").GetComponent<InputField>();
password = GameObject.Find("Password").GetComponent<InputField>();
Login = GameObject.Find("登录").GetComponent<Button>();
Register = GameObject.Find("注册").GetComponent<Button>();
JsonLogin.GetInstance().Init();
}
private void Start()
{
Login.onClick.AddListener(()=> {
JsonLogin.GetInstance().Login(id.text, password.text);
});
Register.onClick.AddListener(() => {
JsonLogin.GetInstance().Register(id.text, password.text);
});
}
}