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 user;
//一个常量用来作为 字典的键
const string DIC_USER="LoginData";
public void Awake()
{
instance = this;
// 每一次运行都要先查一下是否有前面存储的账号和密码
if (loadData() == null) { user = new Dictionary(); }
else { user = loadData(); }
}
//添加用户
public bool AddUser(string Account, string password)
{
if (user.ContainsKey(Account))
{
return false;
}
else
{
user.Add(Account, password);
return true;
}
}
///
/// 比较账号密码是否正确
///
/// 账号
/// 密码
/// 0:账号密码不正确 1:登录成功 -1:账号不存在
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 middle = new Dictionary();
middle = user;
SaveByPayerprefs(DIC_USER , middle);
}
public Dictionary loadData()
{
var json = loadFromPlayerprefs(DIC_USER);
Dictionary jsonDict = JsonConvert.DeserializeObject>(json);
//var database = JsonUtility.FromJson(json);
return jsonDict;
}
private static void SaveByPayerprefs(string key,Dictionary 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_USERSOFTWAREUnityUnityEditorDefaultCompany



