简介
IF框架中的序列化模块分为json,xml,csv。
Csv的使用
代码如下:
using UnityEngine;
using IFramework;
using IFramework.Serialization.Csv; // 引入csv序列化模块
using System.Collections.Generic;
public class Enemy
{ //将要序列化的 敌人类
[CsvIgnore] //序列化忽视 字段
public int enemyId;
public string name;
[CsvColumnName("移动速度")] //序列化 (表)列别名
public float speed;
}
public class CsvTest : MonoBehaviour
{
string path;
void Start()
{
path = Application.dataPath.CombinePath("Examples/Csv/Enemy.csv");
Write();
Read();
}
void Write() {
List<Enemy> enemyList = new List<Enemy>()
{
new Enemy(){ enemyId=1,name="草丛敌人",speed=3.1f},
new Enemy(){ enemyId=2,name="墙后敌人",speed=2.5f},
new Enemy(){ enemyId=3,name="空地敌人",speed=6.3f},
};
CsvWriter w = new CsvWriter(new System.IO.StreamWriter(path, false),
new CsvRow(),
new CsvExplainer());
w.Write(enemyList, ""); //将List 序列化
w.Dispose(); //用完后关闭链接,释放资源。
// CsvRow 提供“截取字符串,还有拼凑字符串” 功能
// CsvExplainer 提供“来字符串和实际类型的转换”
// 支持根据特殊需求重写
}
void Read()
{
CsvReader r =
new CsvReader(new System.IO.StreamReader(path, System.Text.Encoding.UTF8),
new CsvRow(),
new CsvExplainer());
var ValueList = r.Get<Enemy>();
foreach (var valueItem in ValueList)
{
print($"ID {valueItem.enemyId} name {valueItem.name} Speed {valueItem.speed}");
}
r.Dispose();
}
}
结果如下:
生成文件:
输出结果:
补充
IF框架中还提供Json、Xml 的序列化方式。你可以通过IFramework.Serialization.Xml
、IFramework.Serialization.Json
类型对象 进行序列化转化。
结尾
以上内容是 作者个人的理解,如有错误,欢迎指出。
顺便给出OnClick大佬自己 写的文档地址:011序列化模块
如果对 IF框架有其他看法,也欢迎大家 进群交流。