1. 获得选中的要转换的类名,然后反射对象反序列化该类型用于xml反序列化
2. 经过1得到了对象,然后使用序列化工具类反序列化为二进制
xml转二进制(序列化工具类,请看文章https://blog.csdn.net/u011644138/article/details/105850255)
public class DataEditor
{
[MenuItem("Assets/Xml转Binary")]
public static void AssetsXmlToBinary()
{
UnityEngine.Object[] objs = Selection.objects;
for (int i = 0; i < objs.Length; i++)
{
EditorUtility.DisplayProgressBar("文件下的Xml转换成二进制", "正在扫描" + objs[i].name + "... ...", 1.0f / objs.Length * i);
XmlToBinary(objs[i].name);
}
AssetDatabase.Refresh();
EditorUtility.ClearProgressBar();
}
/// <summary>
/// Xml 转二进制 使用创建好的xml 直接读取,然后转换为二进制.
/// </summary>
/// <param name="name"></param>
private static void XmlToBinary(string name)
{
if (string.IsNullOrEmpty(name)) return;
try
{
Type type = null;
foreach (var asm in AppDomain.CurrentDomain.GetAssemblies()) //在这里得到 这个类的类型
{
Type tempType = asm.GetType(name);
if (tempType != null)
{
type = tempType;
break;
}
}
if (type != null)
{
string xmlPath = XmlPath + name + ".xml";
string binaryPath = BinaryPath + name + ".bytes";
object obj = BinarySerializeOpt.XmlDeserialize(xmlPath, type); //在这里序列化成对象
BinarySerializeOpt.BinarySerilize(binaryPath, obj); //在这里序列化成对象
Debug.Log(name + "类转binary 成功,类转binary 路径为:" + binaryPath);
}
}
catch
{
Debug.LogError(name + "Xml转二进制失败");
}
}
}