using System; using System.Collections.Generic; using UnityEngine; namespace Debugging { public class ObjectAndMaterialCounter : MonoBehaviour { public float checkInterval = 1.5f; private Camera cam; private float lastCheckTime; private MeshRenderer[] allRenderers; private int visibleCounter = 0; private int objectsInBatches = 0; private int objectsNotInBatches = 0; private HashSet materials = new HashSet(); private void OnEnable() { cam = Camera.main; allRenderers = FindObjectsOfType(); } private void OnGUI() { GUI.TextField(new Rect(20, 120, 200, 100), $"Visible Objects: {visibleCounter}\nObjects in batches: {objectsInBatches}\nObjects not in batches: {objectsNotInBatches}\n#Materials visible: {materials.Count}"); GUI.TextField(new Rect(20, 220, 300, 400), $"Materials: {string.Join("\n -", materials)}"); } private void Update() { if (Time.time - lastCheckTime < checkInterval) return; objectsInBatches = 0; objectsNotInBatches = 0; visibleCounter = 0; materials.Clear(); lastCheckTime = Time.time; foreach (var meshRenderer in allRenderers) { if (meshRenderer.isVisible) { visibleCounter++; } if (meshRenderer.isPartOfStaticBatch) { objectsInBatches++; } else { objectsNotInBatches++; } foreach (var m in meshRenderer.materials) { materials.Add(m.name); } } } } }