1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- 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<string> materials = new HashSet<string>();
- private void OnEnable()
- {
- cam = Camera.main;
- allRenderers = FindObjectsOfType<MeshRenderer>();
- }
- 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);
- }
- }
- }
- }
- }
|