using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
public class SerializableAndDeserialize : Editor
{
static string path = Application.dataPath + "/mSerializable";
/// <summary>
/// 序列化
/// </summary>
[MenuItem("Mytools/mDeserialize")]
public static void mDeserialize() {
// 要序列化 需要将类添加 System .[Serializable]
SerializableAndDeserialize_Person p_S = new SerializableAndDeserialize_Person();
p_S.Name = "张三";
p_S.Age = 20;
p_S.Gender = '男';
using (FileStream fswrite = new FileStream(path + "SerializableAndDeserialize.txt", FileMode.OpenOrCreate, FileAccess.Write))
{
// 开始序列化对象
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(fswrite, p_S);
AssetDatabase.Refresh();
Debug.Log("序列化完成");
}
}
/// <summary>
/// 反序列化
/// </summary>
[MenuItem("Mytools/mSerializable")]
public static void mSerializable()
{
using (FileStream fswrite = new FileStream(path + "SerializableAndDeserialize.txt", FileMode.OpenOrCreate, FileAccess.Read))
{
// 开始序列化对象
BinaryFormatter bf = new BinaryFormatter();
SerializableAndDeserialize_Person p_D =(SerializableAndDeserialize_Person) bf.Deserialize(fswrite);
Debug.Log(p_D.Name);
Debug.Log(p_D.Age);
Debug.Log(p_D.Gender);
AssetDatabase.Refresh();
Debug.Log("反序列化完成");
}
}
}
// 序列化 将对象转换为二进制
// 反序列化 将二进制转换为对象
// 作用 传输数据
[Serializable]
public class SerializableAndDeserialize_Person
{
private string _name;
private char _gender;
private int _age;
public string Name { get => _name; set => _name = value; }
public char Gender { get => _gender; set => _gender = value; }
public int Age { get => _age; set => _age = value; }
}
C# 序列化与反序列化笔记
最新推荐文章于 2026-06-23 19:08:06 发布
这篇博客介绍了如何在Unity中利用BinaryFormatter实现对象的序列化和反序列化,以便于数据的存储和读取。示例代码展示了如何创建一个可序列化的Person类,并进行操作。

1090

被折叠的 条评论
为什么被折叠?



