Beispiel #1
0
        private Vector2 m_scrollPositionSelect; //选择列表滚动位置//
        void OnGUI()
        {
            if (HelperMap.Count == 0)
            {
                return;
            }

            if (Helper != null && Helper.IsDirty)
            {
                SaveHelperConfiguration(Helper);
            }

            GUILayoutOption[] voptionsNoMaxWidth =
            {
                GUILayout.MaxWidth(10000),
                GUILayout.ExpandHeight(true),
                GUILayout.ExpandWidth(true)
            };

            //选择区//
            GUILayout.BeginVertical();

            //类型//
            GUILayout.Label("编辑器类型");

            selIdx = EditorGUILayout.Popup(selIdx, strTypeList.ToArray());
            if (mCurTypeName != strTypes[selIdx])
            {
                SelectType(strTypes[selIdx]);
            }

            /////检测是否正在运行,这个检测仅由SelectWindow进行,UIHelper中不需要检测///
            if (!Application.isPlaying && Helper.DoesNeedStarted())
            {
                GUILayout.Label("请先运行游戏");
                GUILayout.EndVertical();

                mCurEditingObject = null;
                ShowInEditAndPropertyWindow();
                return;
            }

            //新建//
            if (Helper.CanNew())
            {
                GUILayout.Label("新建");
                GUILayout.BeginHorizontal();

                m_strNew = EditorGUILayout.TextField(m_strNew);
                if (GUILayout.Button("新建配置", GUILayout.Width(60)))
                {
                    onNewFile();
                }
                GUILayout.EndHorizontal();
            }

            if (mCurEditingObject != null)
            {
                GUILayout.BeginHorizontal();
                //保存//
                if (Helper.CanSave())
                {
                    if (GUILayout.Button("保存配置"))
                    {
                        onSaveFile();
                    }
                }
                //另存为//
                if (Helper.CanNew())
                {
                    if (GUILayout.Button("另存配置"))
                    {
                        onSaveOther();
                    }
                }
                //删除//
                if (Helper.CanDelete())
                {
                    if (GUILayout.Button("删除"))
                    {
                        OnDeleteFile();
                    }
                }
                GUILayout.EndHorizontal();
            }
            //选择//
            GUILayout.Label("选择");

            GUILayout.BeginHorizontal();

            string strFilter = EditorGUILayout.TextField(m_strFilter);

            if (GUILayout.Button("搜索配置", GUILayout.Width(60)) || strFilter != m_strFilter)
            {
                string name = GetCurrentSelectFileName();
                DoSearch(strFilter);
                if (name != null)
                {
                    onSelectFile(name);
                }
            }
            GUILayout.EndHorizontal();
            GUILayout.Space(10);

            bool multipleChoice;

            if (Helper.CanMultiple)
            {
                string multipleKey = ConfStringInterfaceMultipleChoicePrefix + mCurTypeName.ToString().ToUpper();
                bool   old         = EditorPrefs.GetBool(multipleKey, false);
                multipleChoice = GUILayout.Toggle(old, "多选");
                if (old != multipleChoice)
                {
                    EditorPrefs.SetBool(multipleKey, multipleChoice);
                }
            }
            else
            {
                multipleChoice = false;
            }
            GUILayout.Space(10);
            //选择列表//
            if (m_filesFiltered.Count > 0)
            {
                HashSet <string> selectedFiles = mHelperSelectedFiles[mCurTypeName];

                m_scrollPositionSelect = GUILayout.BeginScrollView(m_scrollPositionSelect, false, true, voptionsNoMaxWidth);
                if (multipleChoice)
                {
                    for (int i = 0; i < m_filesFiltered.Count; i++)
                    {
                        string name   = m_filesFiltered[i];
                        bool   exists = selectedFiles.Contains(name);

                        bool c = GUILayout.Toggle(exists, m_filesFilteredDisp[i]);
                        if (c)
                        {
                            selectedFiles.Add(name);
                        }
                        else
                        {
                            selectedFiles.Remove(name);
                        }
                        if (c != exists)
                        {
                            SaveSelectedFiles();
                        }
                    }
                }
                else
                {
                    int idx = GUILayout.SelectionGrid(m_indexSelectedFile, m_filesFilteredDisp.ToArray(), 1);
                    if (idx != m_indexSelectedFile)
                    {
                        onSelectFile(idx);
                    }
                }
                GUILayout.EndScrollView();
                if (multipleChoice)
                {
                    Helper.MakeMultipleActionUI();
                    if (GUILayout.Button(Helper.MultipleActionName))
                    {
                        foreach (string i in selectedFiles)
                        {
                            string error;
                            if (!Helper.MultipleAction(i, out error))
                            {
                                EditorUtility.DisplayDialog("错误", error, "确定");
                                break;
                            }
                        }
                        EditorUtility.DisplayDialog("完成", string.Format("所有文件{0}完成", Helper.MultipleActionName), "确定");
                    }

                    GUILayout.Space(10);
                }
            }

            GUILayout.EndVertical();
        }
Beispiel #2
0
        public static void SaveHelperConfiguration(JsonObjectUIHelper helper)
        {
            JsonObjectHelperTypes       type = ((JsonObjectTypeAttribute)helper.GetType().GetCustomAttributes(typeof(JsonObjectTypeAttribute), false)[0]).Type;
            Dictionary <string, string> dic  = new Dictionary <string, string>();

            helper.OnSaveConfig(dic);
            System.Text.StringBuilder sb = new System.Text.StringBuilder();
            foreach (KeyValuePair <string, string> i in dic)
            {
                sb.Append(string.Format("{0}|{1}\n", i.Key, i.Value));
            }
            EditorPrefs.SetString(string.Format("{0}{1}", ConfStringInterfaceHelperPrefix, type.ToString().ToUpper()), sb.ToString());
        }