//---- Functions //-------------- public override void OnInspectorGUI() { if (_preferences == null) { _preferences = target as HexTilePreferences; } base.OnInspectorGUI(); if (_textureDictionary == null) { _textureDictionary = _preferences.Textures; } if (_materialDictionary == null) { _materialDictionary = _preferences.Materials; } DrawTextureDictionary(); DrawMaterialDictionary(); // Set dirty so can save out if (_isDirty) { _isDirty = false; EditorUtility.SetDirty(_preferences); AssetDatabase.SaveAssets(); } }
//---- Texture Drawer //------------------- private void DrawTextureDictionary() { if (_textureDictionary == null) { _textureDictionary = _preferences.Textures; } if (_textureDictionary.Count == 0) { return; } EditorGUILayout.BeginVertical(); { GUILayout.Space(10); EditorGUILayout.LabelField("Textures", EditorStyles.boldLabel); List <string> keys = new List <string>(_textureDictionary.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; Texture texture = _textureDictionary[keys[i]]; _textureDictionary.Remove(keys[i]); _textureDictionary.Add(keyValue, texture); return; } // update asset Texture asset = EditorGUILayout.ObjectField(_textureDictionary[keys[i]], typeof(Texture), false) as Texture; if (asset != _textureDictionary[keys[i]]) { _isDirty = true; _textureDictionary[keys[i]] = asset; } // remove if (GUILayout.Button("-")) { _isDirty = true; _textureDictionary.Remove(keys[i]); return; } } EditorGUILayout.EndHorizontal(); } // add if (GUILayout.Button("+")) { _isDirty = true; _textureDictionary.Add("", null); } } EditorGUILayout.EndVertical(); }