Profiler y optimización: medir antes de tocar

Usa Unity Profiler para detectar cuellos de botella reales y optimizar CPU, render y memoria con criterio técnico.

Optimizar sin medir suele empeorar el proyecto: primero identifica el cuello de botella y luego aplica cambios.

Unity Profiler permite analizar CPU, GPU, memoria, física y render para entender dónde se va el frame time.

Una mala práctica común es usar búsquedas costosas como `GameObject.Find` dentro de `Update()`.

Según contenido.md, perfilar es clave para evitar errores de rendimiento como `GetComponent` repetido por frame.

  • No intentes optimizar todo a la vez: empieza por el mayor coste medible.
  • En la vista CPU, localiza picos estables y revisa qué función o sistema los produce.
  • En memoria, observa asignaciones frecuentes que puedan activar garbage collection en momentos críticos.
  • Guarda capturas de referencia para comparar impacto real de cada optimización aplicada.
  • Mide antes de optimizar.

Leer el Profiler sin perder foco

No intentes optimizar todo a la vez: empieza por el mayor coste medible.

En la vista CPU, localiza picos estables y revisa qué función o sistema los produce.

En memoria, observa asignaciones frecuentes que puedan activar garbage collection en momentos críticos.

Guarda capturas de referencia para comparar impacto real de cada optimización aplicada.

  • Mide antes de optimizar.
  • Ataca el mayor hotspot primero.
  • Compara resultados con datos reproducibles.

Errores típicos que degradan FPS

Muchos problemas de rendimiento son hábitos de código, no límites del motor.

Llamar `GameObject.Find` o `GetComponent` repetidamente en loops calientes añade coste acumulado por frame.

Crear strings y objetos temporales en `Update()` puede disparar GC y causar stutter perceptible.

Separar inicialización (`Awake`/`Start`) de lógica por frame reduce trabajo innecesario en runtime.

Flujo de optimización en producción

Optimizar es un ciclo, no un parche aislado.

Define escenario de prueba real (mismo número de enemigos, efectos y resolución) antes de medir.

Aplica un cambio por iteración para poder atribuir causa/efecto en la mejora o regresión.

Documenta decisiones de rendimiento para que el equipo no reintroduzca problemas ya corregidos.

Unity
18

Profiler y optimización: medir antes de tocar

Usa Unity Profiler para detectar cuellos de botella reales y optimizar CPU, render y memoria con criterio técnico.

Código del tema: GameObject + Component = comportamiento

📘 Teoría

Leer el Profiler sin perder foco

No intentes optimizar todo a la vez: empieza por el mayor coste medible.

En la vista CPU, localiza picos estables y revisa qué función o sistema los produce.

En memoria, observa asignaciones frecuentes que puedan activar garbage collection en momentos críticos.

Guarda capturas de referencia para comparar impacto real de cada optimización aplicada.

  • Mide antes de optimizar.
  • Ataca el mayor hotspot primero.
  • Compara resultados con datos reproducibles.

Errores típicos que degradan FPS

Muchos problemas de rendimiento son hábitos de código, no límites del motor.

1

Llamar `GameObject.Find` o `GetComponent` repetidamente en loops calientes añade coste acumulado por frame.

2

Crear strings y objetos temporales en `Update()` puede disparar GC y causar stutter perceptible.

3

Separar inicialización (`Awake`/`Start`) de lógica por frame reduce trabajo innecesario en runtime.

Cachear referencias para evitar trabajo repetido
using UnityEngine;

public class PerfSafe : MonoBehaviour
{
    private Renderer cachedRenderer;

    void Awake()
    {
        cachedRenderer = GetComponent<Renderer>();
    }

    void Update()
    {
        // Evita GetComponent en cada frame
        if (cachedRenderer != null)
        {
            // Lógica de render ligera
        }
    }
}

Flujo de optimización en producción

Optimizar es un ciclo, no un parche aislado.

1

Define escenario de prueba real (mismo número de enemigos, efectos y resolución) antes de medir.

2

Aplica un cambio por iteración para poder atribuir causa/efecto en la mejora o regresión.

3

Documenta decisiones de rendimiento para que el equipo no reintroduzca problemas ya corregidos.

🧪 Aprende probando

Ejemplo Ejemplo guiado Refactoriza un script que usa `GetComponent` en `Update()` para cachearlo en `Awake()`.

🏁 Retos

Reto Reto práctico Corrige un script para evitar búsquedas costosas por frame y deja una versión preparada para profiling.

¿Qué es esto?

Soy Cristian Eslava y a veces hago webs para procrastinar yo y vosotros 😉.

Esta la hice en febrero de 2026 para facilitar el aprendizaje de mis alumnxs. Aprender desarrollo web practicando. La idea es que crezca semanalmente con nuevos temas, tests y retos.

Inspirado en MDN, en W3Schools, en Codepen, en el crack de Manz y en mil sitios de documentación sobre desarrollo web. Quería aportar además de bloques teóricos con ejemplos, la gamificación de los retos y el sistema de test que ya tenía en culTest .

Si te gustó, si no te gustó, si quieres saludarme, o invitarme a 🍻 no dudes en escribirme en cristianeslava@gmail.com .