예제 #1
0
    /// <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);
    }
예제 #2
0
    /// <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);
        }
    }
예제 #3
0
    /// <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);
    }