Beispiel #1
0
 /// <summary>
 /// DrawBrower
 /// </summary>
 void DrawBrower()
 {
     EditorGUILayout.LabelField("XlsSchemaToSqlite Folders:");
     mConfig.DrawGUI();
     EditorGUILayout.Separator();
     EditorGUILayout.HelpBox(EditorStrayFogXLS.msrSeparateDescription, MessageType.None);
     if (GUILayout.Button("SQLiteDataType Code Sequence"))
     {
         EditorStrayFogApplication.CopyToClipboard(EditorStrayFogXLS.msrSQLiteDataTypeCodeSequence);
         Debug.Log(EditorStrayFogXLS.msrSQLiteDataTypeCodeSequence);
     }
     EditorGUILayout.Separator();
     if (GUILayout.Button("Load XLS"))
     {
         mXlsTableSchemas = EditorStrayFogXLS.ReadXlsSchema();
     }
     EditorGUILayout.Separator();
 }
    /// <summary>
    /// 绘制节点
    /// </summary>
    void DrawAssetNodes()
    {
        #region  mSearchWindowName 搜索
        mSearchWindowName = EditorGUILayout.TextField("Search Window Name", mSearchWindowName);
        #endregion
        EditorGUILayout.Separator();

        #region RenderMode 窗口绘制类别

        #region 批量选择
        EditorGUILayout.BeginHorizontal();
        if (GUILayout.Button("Selected All RenderMode"))
        {
            AdjustRenderModeSelected(1);
        }
        if (GUILayout.Button("UnSelected All RenderMode"))
        {
            AdjustRenderModeSelected(-1);
        }
        if (GUILayout.Button("Reverse All RenderMode"))
        {
            AdjustRenderModeSelected(0);
        }
        EditorGUILayout.EndHorizontal();
        #endregion
        EditorGUILayout.Separator();

        #region 显示操作
        EditorGUILayout.BeginHorizontal();
        EditorGUILayout.LabelField("Window Render Mode", GUILayout.ExpandWidth(false));
        foreach (RenderMode rm in mRenderModes)
        {
            mSearchWindowRenderMode[(int)rm] = EditorGUILayout.ToggleLeft(rm.ToString(), mSearchWindowRenderMode[(int)rm], GUILayout.ExpandWidth(false));
        }
        EditorGUILayout.EndHorizontal();
        #endregion
        #endregion
        EditorGUILayout.Separator();

        #region enUIWindowLayer 窗口层级

        #region 批量选择
        EditorGUILayout.BeginHorizontal();
        if (GUILayout.Button("Selected All Layer"))
        {
            AdjustWindowMinLayerSelected(1);
        }
        if (GUILayout.Button("UnSelected All Layer"))
        {
            AdjustWindowMinLayerSelected(-1);
        }
        if (GUILayout.Button("Reverse All Layer"))
        {
            AdjustWindowMinLayerSelected(0);
        }
        EditorGUILayout.EndHorizontal();
        #endregion
        EditorGUILayout.Separator();

        #region 显示操作
        EditorGUILayout.BeginHorizontal();
        EditorGUILayout.LabelField("Window Layer", GUILayout.ExpandWidth(false));
        mWindowMinLayerScrollViewPosition = EditorGUILayout.BeginScrollView(mWindowMinLayerScrollViewPosition, GUILayout.ExpandHeight(false));
        EditorGUILayout.BeginHorizontal();
        foreach (KeyValuePair <int, string> key in msrWindowMinLayerMaping)
        {
            mSearchWindowMinLayer[key.Key] = EditorGUILayout.ToggleLeft(key.Value, mSearchWindowMinLayer[key.Key], GUILayout.ExpandWidth(false));
        }
        EditorGUILayout.EndHorizontal();
        EditorGUILayout.EndScrollView();
        EditorGUILayout.EndHorizontal();
        #endregion

        #endregion
        EditorGUILayout.Separator();

        #region isDraw 计算是否绘制
        if (mWindows != null && mWindows.Count > 0)
        {
            for (int i = 0; i < mWindows.Count; i++)
            {
                mWindows[i].isDraw =
                    //名称过滤
                    (string.IsNullOrEmpty(mSearchWindowName) || Regex.IsMatch(mWindows[i].nameWithoutExtension,
                                                                              string.Format(@"({0})+?\w*", mSearchWindowName.Replace(",", "|")), RegexOptions.IgnoreCase)) &&
                    //绘制类别过滤
                    mSearchWindowRenderMode[(int)mWindows[i].assetNode.renderMode] &&
                    //窗口最小Layer
                    mSearchWindowMinLayer[(int)mWindows[i].assetNode.layer];
            }
        }
        #endregion

        #region 绘制窗口属性列表
        mRemoveWindows.Clear();
        if (mWindows != null && mWindows.Count > 0)
        {
            mScrollViewPosition = EditorGUILayout.BeginScrollView(mScrollViewPosition);
            EditorGUILayout.BeginVertical();
            for (int i = 0; i < mWindows.Count; i++)
            {
                if (mWindows[i].isDraw)
                {
                    EditorGUILayout.BeginHorizontal();
                    #region 显示属性
                    EditorGUILayout.LabelField(
                        string.Format("{0}=>【{1}】{2}",
                                      string.Format("{0}.{1}", (i + 1).PadLeft(mWindows.Count), mWindows[i].nameWithoutExtension),
                                      mWindows[i].assetNode.renderMode.ToString(),
                                      msrWindowMinLayerMaping[(int)mWindows[i].assetNode.layer]
                                      )
                        );
                    #endregion
                    EditorGUILayout.EndHorizontal();

                    EditorGUILayout.BeginHorizontal();
                    #region Setting 按钮
                    if (GUILayout.Button("Setting"))
                    {
                        EditorStrayFogApplication.PingObject(mWindows[i].assetNode);
                    }
                    #endregion

                    #region Brower 按钮
                    if (GUILayout.Button("Brower"))
                    {
                        EditorStrayFogApplication.PingObject(mWindows[i].path);
                    }
                    #endregion

                    #region Select 按钮
                    if (GUILayout.Button("Select"))
                    {
                        mSearchWindowName = mWindows[i].nameWithoutExtension;
                    }
                    #endregion

                    #region Delete 按钮
                    if (GUILayout.Button("Delete"))
                    {
                        int delScriptIndex = -1;
                        if (EditorStrayFogSavedAssetConfig.setFolderConfigForUIWindowPrefab.paths != null && EditorStrayFogSavedAssetConfig.setFolderConfigForUIWindowPrefab.paths.Length > 0)
                        {
                            string path = Path.GetDirectoryName(mWindows[i].directory).TransPathSeparatorCharToUnityChar();
                            for (int p = 0; p < EditorStrayFogSavedAssetConfig.setFolderConfigForUIWindowPrefab.paths.Length; p++)
                            {
                                if (path.Equals(EditorStrayFogSavedAssetConfig.setFolderConfigForUIWindowPrefab.paths[i]))
                                {
                                    delScriptIndex = p;
                                    break;
                                }
                            }
                        }
                        if (delScriptIndex >= 0)
                        {
                            string delPrefabDirectory = mWindows[i].directory;
                            string delScriptDirectory = Path.Combine(EditorStrayFogSavedAssetConfig.setFolderConfigForUIWindowScript.paths[delScriptIndex], Path.GetFileName(mWindows[i].directory));
                            string delAssetPath       = AssetDatabase.GetAssetPath(mWindows[i].assetNode);
                            mSbInfo.Length = 0;
                            mSbInfo.AppendLine("Do you want to delete window ?");
                            mSbInfo.AppendLine(string.Format("Window =>{0}", mWindows[i].path));
                            mSbInfo.AppendLine("It will delete follow asset:");
                            mSbInfo.AppendLine(string.Format("1. Del Prefab Folder => {0}", delPrefabDirectory));
                            mSbInfo.AppendLine(string.Format("2. Del Script Folder => {0}", delScriptDirectory));
                            mSbInfo.AppendLine(string.Format("3. Del Asset => {0}", delAssetPath));
                            mSbInfo.AppendLine(string.Format("4. Del SQLite UIWindowSetting Where id={0}", mWindows[i].winId));
                            if (EditorUtility.DisplayDialog("Delete", mSbInfo.ToString(), "Yes", "No"))
                            {
                                mRemoveWindows.Add(i);
                                EditorStrayFogUtility.cmd.DeleteFolder(delPrefabDirectory);
                                EditorStrayFogUtility.cmd.DeleteFolder(delScriptDirectory);
                                File.Delete(delAssetPath);
                                EditorStrayFogXLS.DeleteUIWindowSetting(mWindows[i].winId);
                                break;
                            }
                        }
                    }
                    #endregion
                    EditorGUILayout.EndHorizontal();
                }
            }
            EditorGUILayout.EndVertical();
            EditorGUILayout.EndScrollView();

            if (mRemoveWindows.Count > 0)
            {
                foreach (int index in mRemoveWindows)
                {
                    mWindows.RemoveAt(index);
                }
                BuilderWindowEnum();
            }
        }
        #endregion

        #region 显示窗口
        if (GUILayout.Button("Display UIWindow"))
        {
            mWindows = EditorStrayFogGlobalVariable.CollectUIWindowSettingAssets <EditorSelectionUIWindowSetting>();
        }
        #endregion

        #region 保存设置
        if (GUILayout.Button("Save Window Setting"))
        {
            BuilderWindowEnum();
        }
        #endregion
    }