//---- Material Drawer //-------------------- private void DrawMaterialDictionary() { if (_materialDictionary == null) { _materialDictionary = _preferences.Materials; } if (_materialDictionary.Count == 0) { return; } EditorGUILayout.BeginVertical(); { GUILayout.Space(10); EditorGUILayout.LabelField("Materials", EditorStyles.boldLabel); List <string> keys = new List <string>(_materialDictionary.Keys); for (int i = 0; i < keys.Count; i++) { EditorGUILayout.BeginHorizontal(); { // update text string keyValue = EditorGUILayout.DelayedTextField(keys[i]); if (keyValue != keys[i]) { _isDirty = true; Material material = _materialDictionary[keys[i]]; _materialDictionary.Remove(keys[i]); _materialDictionary.Add(keyValue, material); return; } // update asset Material asset = EditorGUILayout.ObjectField(_materialDictionary[keys[i]], typeof(Material), false) as Material; if (asset != _materialDictionary[keys[i]]) { _isDirty = true; _materialDictionary[keys[i]] = asset; } // remove if (GUILayout.Button("-")) { _isDirty = true; _materialDictionary.Remove(keys[i]); return; } } EditorGUILayout.EndHorizontal(); } // add if (GUILayout.Button("+")) { _isDirty = true; _materialDictionary.Add("", null); } } EditorGUILayout.EndVertical(); }