using UnityEditor; using UnityEngine; using UnityEngine.Profiling; using UnityEngine.U2D; namespace CCG.Bigfoot.Editor { /// <summary> /// Displays the Triangle and Vertex count for the object that is selected in the hierarchy and objects underneath it. /// </summary> /// <remarks> /// Authors: CS /// Created: 2024-01-23 /// </remarks> public sealed class SpriteInfoDetector : EditorWindow { private int _totalVertices = 0; private int _totalTriangles = 0; private Vector2 _scrollPosition = Vector2.zero; private const string _windowName = "SpriteRenderer Info"; private long _totalMemory = 0; private SpriteRenderer[] _spriteRenderers; [MenuItem("Tools/SpriteRenderer Info")] static void Init() { SpriteInfoDetector window = (SpriteInfoDetector)EditorWindow.GetWindow(typeof(SpriteInfoDetector)); window.titleContent.text = _windowName; } void OnSelectionChange() { Repaint(); } void OnGUI() { if (Selection.activeGameObject) { _spriteRenderers = Selection.activeGameObject.GetComponentsInChildren<SpriteRenderer>(); _totalVertices = 0; _totalTriangles = 0; _totalMemory = 0; _scrollPosition = EditorGUILayout.BeginScrollView(_scrollPosition); foreach (SpriteRenderer spriteRenderer in _spriteRenderers) { if (spriteRenderer) { int vertexCount = spriteRenderer.sprite.GetVertexCount(); int triangleCount = spriteRenderer.sprite.triangles.Length / 3; long memorySize = Profiler.GetRuntimeMemorySizeLong(spriteRenderer.gameObject); _totalVertices += vertexCount; _totalTriangles += triangleCount; _totalMemory += memorySize; EditorGUILayout.LabelField(spriteRenderer.gameObject.name); EditorGUILayout.LabelField("Vertices: ", vertexCount.ToString()); EditorGUILayout.LabelField("Triangles: ", triangleCount.ToString()); EditorGUILayout.LabelField("Memory: ", EditorUtility.FormatBytes(memorySize)); GUILayout.Space(10); } } EditorGUILayout.EndScrollView(); EditorGUILayout.LabelField("Total Vertices: ", _totalVertices.ToString()); EditorGUILayout.LabelField("Total Triangles: ", _totalTriangles.ToString()); EditorGUILayout.LabelField("Total Memory: ", EditorUtility.FormatBytes(_totalMemory)); } } } }