hellcat-nardo-felidal/Assets/Hierarchy 2/Editor/HierarchyResources.cs
2023-10-08 23:10:19 -07:00

75 lines
2.4 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEditor;
namespace Hierarchy2
{
internal class HierarchyResources : ScriptableObject
{
Dictionary<string, Texture2D> dicIcons = new Dictionary<string, Texture2D>();
public List<Texture2D> listIcons = new List<Texture2D>();
public void GenerateKeyForAssets()
{
dicIcons.Clear();
dicIcons = listIcons.ToDictionary(texture2D => texture2D.name);
}
public Texture2D GetIcon(string key)
{
Texture2D texture2D = null;
var getResult = dicIcons.TryGetValue(key, out texture2D);
if (getResult == false)
Debug.Log(string.Format("Icon with {0} not found, return null.", key));
return texture2D;
}
internal static HierarchyResources GetAssets()
{
var guids = AssetDatabase.FindAssets(string.Format("t:{0}", typeof(HierarchyResources).Name));
if (guids.Length > 0)
{
var asset = AssetDatabase.LoadAssetAtPath<HierarchyResources>(AssetDatabase.GUIDToAssetPath(guids[0]));
if (asset != null)
return asset;
}
return null;
}
internal static HierarchyResources CreateAssets()
{
String path = EditorUtility.SaveFilePanelInProject("Save as...", "Resources", "asset", "");
if (path.Length > 0)
{
HierarchyResources settings = ScriptableObject.CreateInstance<HierarchyResources>();
AssetDatabase.CreateAsset(settings, path);
AssetDatabase.SaveAssets();
AssetDatabase.Refresh();
EditorUtility.FocusProjectWindow();
Selection.activeObject = settings;
return settings;
}
return null;
}
}
[CustomEditor(typeof(HierarchyResources))]
internal class ResourcesInspector : Editor
{
HierarchyResources resources;
void OnEnable() => resources = target as HierarchyResources;
public override void OnInspectorGUI()
{
DrawDefaultInspector();
if (GUILayout.Button("Generate Key For Assets"))
resources.GenerateKeyForAssets();
}
}
}