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(); }
public Item(string name, Convert.UnityStructs type, object value) { this.name = name; this.type = type; this.value = value; }