?代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
using System.Linq;
using Newtonsoft.Json;
using UnityEditor;
public class DataBase : MonoBehaviour
{
private static DataBase instance;
public static DataBase Instance { get { return instance; } }
//声明一个临时字典来存储账号密码
public Dictionary<string, string> user;
//一个常量用来作为 字典的键
const string DIC_USER="LoginData";
public void Awake()
{
instance = this;
// 每一次运行都要先查一下是否有前面存储的账号和密码
if (loadData() == null) { user = new Dictionary<string, string>(); }
else { user = loadData(); }
}
//添加用户
public bool AddUser(string Account, string password)
{
if (user.ContainsKey(Account))
{
return false;
}
else
{
user.Add(Account, password);
return true;
}
}
/// <summary>
/// 比较账号密码是否正确
/// </summary>
/// <param name="Account">账号</param>
/// <param name="password">密码</param>
/// <returns>0:账号密码不正确 1:登录成功 -1:账号不存在 </returns>
public int IsUserTure(string Account,string password)
{
if (!user.ContainsKey(Account))
{
return -1;
}
if (user[Account] == password)
{
return 1;
}
else
{
return 0;
}
}
// 将数据保存
public void saveData()
{
Dictionary<string, string> middle = new Dictionary<string, string>();
middle = user;
SaveByPayerprefs(DIC_USER , middle);
}
public Dictionary<string, string> loadData()
{
var json = loadFromPlayerprefs(DIC_USER);
Dictionary<string, string> jsonDict = JsonConvert.DeserializeObject<Dictionary<string, string>>(json);
//var database = JsonUtility.FromJson<database>(json);
return jsonDict;
}
private static void SaveByPayerprefs(string key,Dictionary<string,string> data)
{
// var josn = JsonUtility.ToJson(data);
string josn = JsonConvert.SerializeObject(data);
PlayerPrefs.SetString(key, josn);
PlayerPrefs.Save();
}
private static string loadFromPlayerprefs(string key)
{
return PlayerPrefs.GetString(key,null);
}
private void OnApplicationQuit()
{
saveData();
}
[MenuItem("小工具/删除数据")]
public static void DeletePlayerDataPrefs()
{
PlayerPrefs.DeleteAll();
}
}
?准备
?using Newtonsoft.Json;
有的VS可能没有Newtonsoft.json这个程序集(我开始的时候就没有,困扰了我很久)
首先打开资源管理器查看是否有Newtonsoft.json
找到解决方案右键 -> 点击管理器解决方案NuGet程序包 查找该程序集并安装。
?最后别忘了在unity中导入相应的包,不然会报错。
?补充
unity使用Playerprefs存储的数据都会存在注册表如下位置中,并且在可以直接更改数据信息
计算机\HKEY_CURRENT_USER\SOFTWARE\Unity\UnityEditor\DefaultCompany\
|