La serialización es el proceso de convertir un objeto en un flujo de bytes para almacenamiento a largo plazo en la memoria, en una base de datos o en un archivo. Su objetivo principal es guardar el estado del objeto para su uso posterior cuando sea necesario. El proceso opuesto se llama deserialización.
Para usar la serialización, necesitamos importar el espacio de nombres System.Runtime.Serialization.Formatters.Binary .
void Start () {
Write();
Read();
}
void Write () {
Persons p = new Persons(1001, "海涛");//将这个值传到下面的文件中
string path = Application.dataPath + "/flie/haitao.txt";
using (FileStream fs = new FileStream(path, FileMode.Create, FileAccess.Write))
{
try
{
BinaryFormatter bf=new BinaryFormatter();//格式化器
bf.Serialize(fs, p);//序列化
}
catch(Exception e)
{
print(e.Message);
}
finally
{
fs.Close();
}
}
}
void Read()
{
string path = Application.dataPath + "/flie/haitao.txt";
using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read))
{
try
{
BinaryFormatter bf = new BinaryFormatter();//格式化器
Persons p = (Persons)bf.Deserialize(fs);//反序列话
print(p.Id + "\t" + p.Name);
}
catch (Exception e)
{
print(e.Message);//打赢错误信息
}
finally
{
fs.Close();
}
}
}
JSON (Notación de objetos de JavaScript: Notación de objetos de JavaScript) es un formato de intercambio de datos liviano que es fácil de leer y escribir para los humanos. También es fácil para las máquinas analizar y generar.
Al escribir un archivo JSON, debe escribir una clase y las propiedades no están encapsuladas
Aquí uso un registro de inicio de sesión como ejemplo
Esta es una clase de atributo
using System;
//序列化类
[Serializable]
public class Users
{
public string Id;
public string Password;
public Users()
{
}
public Users(string id, string password)
{
Id = id;
Password = password;
}
}
operación de escritura
public void Write()
{
string path = Application.dataPath + "/File/Users.txt";
Users u = new Users();
u.Id = zhtext.text;
u.Password = mmtext.text;
string s = JsonUtility.ToJson(u) + "\n";//转换格式
File.AppendAllText(path, s);
print(s);
}
operación de lectura
public void Rread()
{
string path=Application.dataPath + "/File/Users.txt";
string[] s=File.ReadAllLines(path);
for(int i=0;i<s.Length;i++)
{
Users u= JsonUtility.FromJson<Users>(s[i]);
if(u.Id== zhtext.text&&u.Password== mmtext.text)
{
print("登入成功");
}
if(i==s.Length)
{
print("账号或者密码错误");
}
}
}