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 static void Open <T>(string windowName, UIProgramData[] pDataArray, D data)
            where T : ShowUIProgramDataBaseWindow <D>
        {
            splitTextStyle.normal.textColor = Color.red;

            if (window == null)
            {
                window = GetWindow <T>(false, windowName, true);
                window.Show();
                window.pDataArray = pDataArray;
                window.data       = data;
            }
        }
        public void ExportScript(bool isGenDllScript)
        {
            UIExportScript expScript = (target as UIExportScript);

            try
            {
                System.Diagnostics.Stopwatch stop = new System.Diagnostics.Stopwatch();
                stop.Start();
                bool isNeedReGenDll = false;

                ExportScriptTools tools    = new ExportScriptTools(expScript);
                string            filePath = FilePathManager.Instance.GenerateFilePath(isGenDllScript, expScript.ClassName, ref isNeedReGenDll);
                tools.ExportScript(filePath);

                if (isGenDllScript || isNeedReGenDll)
                {
                    //编译DLL,编译后,会刷新。
                    CompileDll();
                }
                else
                {
                    //没编译,所以要刷新
                    AssetDatabase.Refresh();
                }
                stop.Stop();
                Debug.Log("导出脚本耗时:" + stop.ElapsedMilliseconds + "ms");
            }
            catch (UIExportDataException e)
            {
                if (e.ErrorObjs != null)
                {
                    if (EditorUtility.DisplayDialog("Export Script Error", e.Message, "Show Error", "Ok"))
                    {
                        ErrorWindow.ErrorWindowData data = new ErrorWindow.ErrorWindowData();
                        data.clsName  = expScript.ClassName;
                        data.errorLog = e.Message;
                        ShowUIProgramDataBaseWindow <ErrorWindow.ErrorWindowData> .Open <ErrorWindow>
                            (ErrorWindow.windowName, e.ErrorObjs, data);
                    }
                }
                else
                {
                    EditorUtility.DisplayDialog("Export Script Error", e.Message, "Ok");
                }
            }
        }
 public void OnDisable()
 {
     window     = null;
     pDataArray = null;
 }
 public void OnEnable()
 {
     window = this;
 }