#if UNITY_EDITOR using UnityEditor; #endif using UnityEngine; /* Code made by LaneFox from Unity Community Forum */ #if UNITY_EDITOR [InitializeOnLoad] #endif public class FHierarchyIcons { static FHierarchyIcons() { #if UNITY_EDITOR EditorApplication.hierarchyWindowItemOnGUI += EvaluateIcons; #endif } private static void EvaluateIcons(int instanceId, Rect selectionRect) { #if UNITY_EDITOR GameObject go = EditorUtility.InstanceIDToObject(instanceId) as GameObject; if (go == null) return; IFHierarchyIcon slotCon = go.GetComponent(); if (slotCon != null) DrawIcon(slotCon.EditorIconPath, selectionRect); #endif } private static void DrawIcon(string texName, Rect rect) { #if UNITY_EDITOR if (string.IsNullOrEmpty(texName)) return; Rect r = new Rect(rect.x + rect.width - 16f, rect.y, 16f, 16f); GUI.DrawTexture(r, GetTex(texName)); #endif } private static Texture2D GetTex(string name) { #if UNITY_EDITOR return (Texture2D)Resources.Load(name); #else return null; #endif } } public interface IFHierarchyIcon { string EditorIconPath { get; } } /* {...} public class ItemUiSlot : MonoBehaviour, IDropHandler, FIHierarchyIcon { public string EditorIconPath { get { return "LogoGrey"; } } {...} */