/// <summary> /// 根据路径加载类对象 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="path"></param> /// <returns></returns> public T LoadData <T>(string path) where T : ExcelBase { if (string.IsNullOrEmpty(path)) { Debug.LogError("路径为空"); return(null); } if (m_AllExcelData.ContainsKey(path)) { Debug.Log("类已加载:" + path); return(m_AllExcelData[path] as T); } T data = BinarySerializeOpt.BinaryDeserializationRun <T>(path); #if UNITY_EDITOR if (data == null) { Debug.Log(path + "二进制加载失败,改为xml加载"); path = path.Replace("Binary", "Xml").Replace(".bytes", ".xml"); data = BinarySerializeOpt.XmlDeserialization <T>(path); } #endif if (data != null) { data.Init(); } m_AllExcelData.Add(path, data); return(data); }
/// <summary> /// 将xml转换为二进制 /// </summary> /// <param name="className"></param> public static void XmlToBinary(string className) { if (string.IsNullOrEmpty(className)) { return; } try { Type type = null; foreach (var asm in AppDomain.CurrentDomain.GetAssemblies()) { Type tempType = asm.GetType(className); if (tempType != null) { type = tempType; break; } } if (type != null) { string xmlPath = XMLPATH + className + ".xml"; string binaryPath = BINARYPATH + className + ".bytes"; object obj = BinarySerializeOpt.XmlDeserialization(xmlPath, type); BinarySerializeOpt.BinarySerialize(binaryPath, obj); Debug.Log(className + "xml转二进制成功!"); } } catch (Exception e) { Debug.LogError(className + "xml转二进制失败!" + e); } }
/// <summary> /// xml反序列化 /// </summary> /// <param name="className"></param> /// <param name="dataObj"></param> /// <returns></returns> private static object GetObjFromXml(string className) { object dataObj = null; Type type = null; foreach (var asm in AppDomain.CurrentDomain.GetAssemblies()) { Type tempType = asm.GetType(className); if (tempType != null) { type = tempType; break; } } if (type != null) { string xmlPath = XMLPATH + className + ".xml"; dataObj = BinarySerializeOpt.XmlDeserialization(xmlPath, type); } return(dataObj); }