Esempio n. 1
0
        private void OnGUI()
        {
            EditorGUILayout.LabelField(_configPath);

            EditorGUILayout.BeginHorizontal();
            if (GUILayout.Button("打开", EditorStyles.miniButtonLeft, GUILayout.Width(100)))
            {
                _config = new List <Item>();

                _configPath = EditorUtility.OpenFilePanelWithFilters("打开配置文件", Application.dataPath, new[] { "Xml Files", "xml", "Config Files", "config", "All Files", "*" });
                Debug.Log(_configPath);
                Open();
            }
            if (GUILayout.Button("新建", EditorStyles.miniButtonRight, GUILayout.Width(100)))
            {
                _config = new List <Item>();

                _configPath = EditorUtility.SaveFilePanel("新建配置文件", Application.dataPath, "config", "xml");
                Debug.Log(_configPath);
                CreateNew();
            }
            EditorGUILayout.EndHorizontal();

            if (_config == null)
            {
                return;
            }

            EditorGUILayout.Space();
            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.LabelField("名称", GUILayout.Width(100f));
            EditorGUILayout.LabelField("类型", GUILayout.Width(100f));
            EditorGUILayout.LabelField("值");
            EditorGUILayout.EndHorizontal();

            _scrollvector2 = EditorGUILayout.BeginScrollView(_scrollvector2);
            for (int i = 0; i < _config.Count; i++)
            {
                // if (_dirtyItems.Contains(i))
                // {
                //     GUI.backgroundColor = CHANGEDCOLOR;
                // }
                EditorGUILayout.BeginHorizontal();
                string tmpName = EditorGUILayout.TextField(_config[i].name, GUILayout.Width(100f));
                if (!string.Equals(tmpName, _config[i].name))
                {
                    // _dirtyItems.Add(i);
                    _config[i].name = tmpName;
                }

                Convert.UnityStructs tmpType = (Convert.UnityStructs)EditorGUILayout.EnumPopup(_config[i].type, GUILayout.Width(100f));
                if (tmpType != _config[i].type)
                {
                    // _dirtyItems.Add(i);
                    _config[i].type  = tmpType;
                    _config[i].value = Convert.GetDefaultValue(_config[i].type);
                }

                object tmpValue = null;
                switch (_config[i].type)
                {
                case Convert.UnityStructs.String:
                    tmpValue = EditorGUILayout.TextField((string)_config[i].value);
                    break;

                case Convert.UnityStructs.Boolean:
                    tmpValue = EditorGUILayout.Toggle((bool)_config[i].value);
                    break;

                case Convert.UnityStructs.Int32:
                    tmpValue = EditorGUILayout.IntField((int)_config[i].value);
                    break;

                case Convert.UnityStructs.Single:
                    tmpValue = EditorGUILayout.FloatField((float)_config[i].value);
                    break;

                case Convert.UnityStructs.Double:
                    tmpValue = EditorGUILayout.DoubleField((double)_config[i].value);
                    break;

                case Convert.UnityStructs.Vector2:
                    tmpValue = EditorGUILayout.Vector2Field(string.Empty, (Vector2)_config[i].value);
                    break;

                case Convert.UnityStructs.Vector3:
                    tmpValue = EditorGUILayout.Vector3Field(string.Empty, (Vector3)_config[i].value);
                    break;

                case Convert.UnityStructs.Vector4:
                    tmpValue = EditorGUILayout.Vector4Field(string.Empty, (Vector4)_config[i].value);
                    break;

                case Convert.UnityStructs.Color:
                    tmpValue = EditorGUILayout.ColorField((Color)_config[i].value);
                    break;

                case Convert.UnityStructs.Color32:
                    tmpValue = EditorGUILayout.ColorField((Color32)_config[i].value);
                    break;

                case Convert.UnityStructs.Rect:
                    tmpValue = EditorGUILayout.RectField((Rect)_config[i].value);
                    break;
                }
                if (tmpValue != _config[i].value)
                {
                    // _dirtyItems.Add(i);
                    _config[i].value = tmpValue;
                }

                if (GUILayout.Button("+", EditorStyles.miniButtonLeft, GUILayout.Width(30f)))
                {
                    _insertItem = i;
                }
                if (GUILayout.Button("X", EditorStyles.miniButtonRight, GUILayout.Width(30f)))
                {
                    _deleteItem = i;
                }

                EditorGUILayout.EndHorizontal();

                // GUI.backgroundColor = DEFAULTCOLOR;

                if (_insertItem > -1)
                {
                    _config.Insert(i, new Item("new", Convert.UnityStructs.String, string.Empty));
                    _insertItem = -1;
                }

                if (_deleteItem > -1)
                {
                    _config.RemoveAt(_deleteItem);
                    _deleteItem = -1;
                }
            }
            EditorGUILayout.EndScrollView();

            EditorGUILayout.BeginHorizontal();

            if (GUILayout.Button("添加", EditorStyles.miniButtonLeft))
            {
                _config.Add(new Item("new", Convert.UnityStructs.String, string.Empty));
            }
            if (GUILayout.Button("保存", EditorStyles.miniButtonMid))
            {
                Save();
                AssetDatabase.Refresh();
            }
            if (GUILayout.Button("重新打开", EditorStyles.miniButtonRight))
            {
                _config.Clear();
                Open();
            }
            EditorGUILayout.EndHorizontal();
        }
Esempio n. 2
0
 public Item(string name, Convert.UnityStructs type, object value)
 {
     this.name  = name;
     this.type  = type;
     this.value = value;
 }