Josn实现本地注册登录并存取账户信息
在本地创建一个playerInfoTest的text文本,由于StreamReader读取Json的原因,文本中加入一个英文的"{}",然后把后缀名改为json,拖到Unity的Assets文件夹下,将脚本挂上相应的物体,即可运行,数据是可以进行本地存取的,也不会覆盖,初学者可以学习一下。
效果如下:
脚本如下:
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System.IO;
using LitJson;
public class JsonWriteToFile : MonoBehaviour
{
public InputField account;
public InputField passWord;
public Button Yes;
string jsonFilePath;
Dictionary<string, string> playerInfoDic;//储存信息的字典
void Start()
{
jsonFilePath = Application.dataPath + "/playerInfoTest.Json";
playerInfoDic = JsonMapper.ToObject<Dictionary<string, string>>(new StreamReader(jsonFilePath).ReadToEnd());
if (playerInfoDic == null)
{
playerInfoDic = new Dictionary<string, string>();
}
Yes.onClick.AddListener(() => { RegistInfo(); });
}
/// <summary>
/// 保存信息到文件中的方法
/// </summary>
void SaveInfo()
{
//将信息转换为标准的Json字符串
string jsonStr = JsonMapper.ToJson(playerInfoDic);
//将信息写入文件中
StreamWriter sw = new StreamWriter(jsonFilePath);
sw.Write(jsonStr);
sw.Close(); sw.Dispose();
//File.WriteAllText(jsonFilePath, jsonStr);
}
/// <summary>
/// 从Josn文本中读取信息的方法
/// </summary>
Dictionary<string, string> ReadJsonFileInfo()
{
StreamReader sr = new StreamReader(jsonFilePath);
string currentInfo = sr.ReadToEnd();
playerInfoDic = JsonMapper.ToObject<Dictionary<string, string>>(currentInfo);
当前已存在于Json文本中的信息
//string currentInfo = File.ReadAllText(jsonFilePath);
//Dictionary<string, string> ReadInfo = JsonMapper.ToObject<Dictionary<string, string>>(currentInfo);
返回文本信息字典
sr.Close(); sr.Dispose();
return playerInfoDic;
}
/// <summary>
/// 注册信息的方法
/// </summary>
void RegistInfo()
{
if (account.text.Length != 0 && passWord.text.Length != 0)
{
if (!ReadJsonFileInfo().ContainsKey(account.text))
{
playerInfoDic.Add(account.text, passWord.text);
SaveInfo();
Debug.Log("注册成功");
}
else
{
Debug.Log("账号已存在.请重新注册");
}
}
else
{
Debug.Log("请输入信息");
}
}
}