Ejemplo n.º 1
0
    public void ExportDefaultClass(string szPath)
    {
        m_szFileBuilder.Length = 0;
        m_szFileBuilder.AppendLine();
        foreach (Type nType in m_AllRefType.Keys)
        {
            if (m_AllExportType.ContainsKey(nType))
            {
                continue;
            }
            if (nType.IsEnum)
            {
                PushInnerType(m_szFileBuilder, string.Empty, nType);
                continue;
            }
            if (nType.IsArray)
            {
                continue;
            }
            if (!nType.IsClass)
            {
                continue;
            }
            FCValueType value = FCValueType.TransType(nType);
            if (value.m_nTemplateType != fc_value_tempalte_type.template_none)
            {
                continue;
            }
            if (value.m_nValueType == fc_value_type.fc_value_delegate)
            {
                continue;
            }
            if (FCValueType.IsBaseType(value.m_nValueType))
            {
                continue;
            }

            if (nType == typeof(Type))
            {
                m_szFileBuilder.AppendLine("class Type{}");
            }
            else if (nType == typeof(System.Object))
            {
                m_szFileBuilder.AppendFormat("class {0}{{}}\r\n", nType.Name);
            }
            else if (nType == typeof(UnityEngine.Object))
            {
                m_szFileBuilder.AppendLine("class UnityObject{}");
            }
            else
            {
                m_szFileBuilder.AppendFormat("class {0} : {1}{{}}\r\n", nType.Name, nType.BaseType.Name);
            }
            m_szFileBuilder.AppendLine();
        }
        string szPathName = szPath + "all_default_class.cs";

        File.WriteAllText(szPathName, m_szFileBuilder.ToString());
    }
Ejemplo n.º 2
0
    public void ExportDefaultClass(string szPath)
    {
        m_szFileBuilder.Length = 0;
        m_szFileBuilder.AppendLine();
        m_szFileBuilder.AppendLine("using System;");
        foreach (Type nType in m_AllRefType.Keys)
        {
            if (m_AllExportType.ContainsKey(nType))
            {
                continue;
            }
            if (nType.IsEnum)
            {
                PushInnerType(m_szFileBuilder, string.Empty, nType);
                continue;
            }
            if (nType.IsArray)
            {
                continue;
            }
            if (!nType.IsClass)
            {
                //if (!nType.IsValueType && !nType.IsInterface)  // 如果不是结构体, 也是接口类
                //    continue;
            }
            FCValueType value = FCValueType.TransType(nType);
            if (value.m_nTemplateType != fc_value_tempalte_type.template_none)
            {
                continue;
            }
            if (value.m_nValueType == fc_value_type.fc_value_delegate)
            {
                continue;
            }
            if (FCValueType.IsBaseType(value.m_nValueType))
            {
                continue;
            }

            // 如果是内部的类,不需要再导出了
            if (FCExclude.IsDontExportClass(nType))
            {
                continue;
            }
            //if (nType == typeof(IntPtr))
            //    continue;
            //if (nType == typeof(IEnumerator))
            //    continue;

            if (nType.Name == "T")
            {
                continue;
            }
            if (nType.Name.IndexOf("UnityEvent`") != -1)
            {
                continue;
            }
            if (nType.Name.IndexOf('&') != -1)
            {
                continue;
            }
            if (nType.Name.IndexOf('`') != -1)
            {
                continue;
            }

            if (nType == typeof(Type))
            {
                m_szFileBuilder.AppendLine("class Type{}");
            }
            else if (nType == typeof(System.Object))
            {
                //m_szFileBuilder.AppendFormat("class {0}{{}}\r\n", nType.Name);
                continue;
            }
            else if (nType == typeof(UnityEngine.Object))
            {
                m_szFileBuilder.AppendLine("class UnityObject{}");
            }
            else
            {
                Type nParentType = nType.BaseType;
                if (nParentType != null && m_AllRefType.ContainsKey(nParentType))
                {
                    m_szFileBuilder.AppendFormat("class {0}:{1}{{}}\r\n", nType.Name, nParentType.Name);
                }
                else
                {
                    m_szFileBuilder.AppendFormat("class {0}{{}}\r\n", nType.Name);
                }
            }
            m_szFileBuilder.AppendLine();
        }
        string szPathName = szPath + "all_default_class.cs";

        File.WriteAllText(szPathName, m_szFileBuilder.ToString());
    }