public override void OnInspectorGUI()
        {
            base.OnInspectorGUI();
            if (PrefabUtility.GetPrefabType(target) == PrefabType.Prefab)
            {
                //证明是Prefab上的脚本,这个时候,导出脚本功能不正常,所以不能导出。
                return;
            }

            GUILayout.BeginHorizontal();
            //导出脚本
            if (GUILayout.Button("Export Inside Script"))
            {
                ExportScript(false);
            }

            //大纲
            if (GUILayout.Button("OutLine"))
            {
                UIExportScript expScript             = target as UIExportScript;
                OutLineWindow.OutLineWindowData data = new OutLineWindow.OutLineWindowData();
                data.clsName = expScript.ClassName;
                ShowUIProgramDataBaseWindow <OutLineWindow.OutLineWindowData> .Open <OutLineWindow>
                    (OutLineWindow.windowName, expScript.GetComponentsInChildren <UIProgramData>(true), data);
            }

            GUILayout.EndHorizontal();

            //因物体会挂在用户定制脚本,而用户脚本并不在Dll中,故不能编译DLL

            ////导出脚本
            //if (GUILayout.Button("Export Dll Script"))
            //{
            //    ExportScript(true);
            //}

            //GUILayout.BeginHorizontal();
            ////编译Dll
            //if (GUILayout.Button("Compile dll"))
            //{
            //    CompileDll();
            //}

            ////大纲
            //if (GUILayout.Button("OutLine"))
            //{
            //    UIExportScript expScript = target as UIExportScript;
            //    OutLineWindow.OutLineWindowData data = new OutLineWindow.OutLineWindowData();
            //    data.clsName = expScript.ClassName;
            //    ShowUIProgramDataBaseWindow<OutLineWindow.OutLineWindowData>.Open<OutLineWindow>
            //        (OutLineWindow.windowName, expScript.GetComponentsInChildren<UIProgramData>(true), data);
            //}

            //GUILayout.EndHorizontal();

            GUILayout.Label("by - ZhuGeLongFei");
        }
        public void ExportScript(string filePath)
        {
            //1:类名检测
            if (!CheckVariableOrClassName(ClassName))
            {
                throw new UIExportDataException("ClassName is null or illegal !");
            }
            Dictionary <string, List <UIExportData> > dic_ClassAndVariables = new Dictionary <string, List <UIExportData> >();

            dic_ClassAndVariables.Add(ClassName, new List <UIExportData>());

            //2:获取所有导出数据
            UIProgramData[] ProgramDatas = export.GetComponentsInChildren <UIProgramData>(true);
            if (null == ProgramDatas || ProgramDatas.Length == 0)
            {
                throw new UIExportDataException("Can't find the UIProgramData from all game object !");
            }

            //过滤不导出的数据
            for (int i = 0; i < ProgramDatas.Length; i++)
            {
                if (ProgramDatas[i].notExport)
                {
                    ProgramDatas[i] = null;
                }
            }

            //3:寻找所有创建的其他类
            FindAllClassNameSaveToDic(ProgramDatas, dic_ClassAndVariables);

            //4:根据导出数据的类名分类
            FindAllVariablesSaveToDic(ProgramDatas, dic_ClassAndVariables);

            AClassFileBuilder gcf = new TemplateClassBuilder();

            gcf.CreateFile(ClassName, filePath, dic_ClassAndVariables);
        }