方式一:
1.在unity的editor文件夹下序列化文件BytesGenerator.cs
using UnityEditor;
using UnityEngine;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
public class BytesGeneratorEditor
{
[MenuItem("Tools/生成 TestConfig.bytes")]
public static void GenerateBytesFile()
{
LevelConfig config = new LevelConfig
{
levelId = 1,
levelName = "第一关",
enemyCount = 10
};
string path = Application.dataPath + "/Resources/TestConfig.bytes";
BinaryFormatter bf = new BinaryFormatter();
using (FileStream fs = new FileStream(path, FileMode.Create))
{
bf.Serialize(fs, config);
}
Debug.Log($"✅ 已生成序列化文件: {path}");
AssetDatabase.Refresh(); // 刷新Unity资源
}
}
2.配置类LevelConfig.cs
using System;
using UnityEngine;
// 可序列化的数据类
[Serializable]
public class LevelConfig
{
public int levelId;
public string levelName;
public int enemyCount;
}
3.读取和反序列化BytesLoader.cs
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using UnityEngine;
public class BytesLoader : MonoBehaviour
{
void Start()
{
// 从 Resources 加载 .bytes
TextAsset asset = Resources.Load<TextAsset>("TestConfig");
if (asset == null)
{
Debug.LogError("❌ 没找到 TestConfig.bytes,请确认它在 Resources 文件夹里");
return;
}
// 反序列化
BinaryFormatter bf = new BinaryFormatter();
using (MemoryStream ms = new MemoryStream(asset.bytes))
{
LevelConfig config = (LevelConfig)bf.Deserialize(ms);
Debug.Log($"✅ 反序列化成功: levelId={config.levelId}, levelName={config.levelName}, enemyCount={config.enemyCount}");
}
}
}
JsonConvert.DeserializeObject