Este paseo muestra cómo usar el MicroProfiler para encontrar un aspecto problemático de una experiencia y identificar la causa raíz.Descarga la experiencia, Abre desde el archivo en Studio, y sigue adelante.
Identifica el problema
Después de abrir la experiencia en Studio, comience a probarla con F5 o el botón Reproducir .
La velocidad de fotogramas se siente decente, pero no tan suave como debería ser para una experiencia de este tamaño y alcance.Navegue a la pestaña Ver y haga clic en Resumen debajo de Estadísticas.
Tenga en cuenta que la tasa de fotogramas está por debajo de 60 fotogramas por segundo (FPS).
Abre el MicroProfiler presionando CtrlAltF6 ( ⌘⌥F6 ).
Tenga en cuenta que los tiempos de marco son consistentes —las barras tienen aproximadamente la misma altura—, por lo que lo que cause la baja tasa de marco se ejecuta en cada marco en lugar de ejecutarse ocasionalmente y causar picos de tiempo de marco.
Pausa el MicroProfiler presionando CtrlP ( ⌘P ).Pausar con el atajo de teclado abre modo detallado.
Haga clic y arrastre para desplazar el gráfico.Observe cómo una tarea específica en los hilos de trabajador parece estar utilizando mucho tiempo de procesamiento en comparación con el subprocesoprincipal.Pase el mouse sobre RunService.Stepped y observe cuánto tiempo tarda en Renderizar.
Las barras apiladas en la línea de tiempo indican una jerarquía de código, así que mantén el desplazamiento en capas más bajas y más bajas para intentar identificar el problema.
Observe la etiqueta LocalScript que indica el nombre del script, y la etiqueta Raycast que indica que el problema podría estar relacionado con el intersección rayo-superficie, emisión de rayos.
Crear etiquetas de solución de problemas
Ahora que el MicroProfiler ha proporcionado un punto de partida, puedes solucionar el código problemático.
Detén la prueba de reproducción y filtre la ventana del explorador para localscript encontrar el archivo.
Una búsqueda de raycast indica que esta parte del código es probablemente la culpable de la mala ejecuciónde la experiencia:
local RAYS_PER_SECOND = 1500local function onStepped()for _ = 1, RAYS_PER_SECOND dolocal startPosition = getRandomPosition()local endPosition = getRandomPosition()local direction = endPosition - startPositionWorkspace:Raycast(startPosition,endPosition)endendRunService.Stepped:Connect(onStepped)En concreto, puedes ver que el código está lanzando 1,500 rayos por segundo en direcciones aleatorias.
Para verificar que esta parte del código está causando el retraso de renderizado, envuelva el contenido de la función con debug.profilebegin() y debug.profileend() :
local function onStepped()debug.profilebegin("Raycast Spam")for _ = 1, RAYS_PER_SECOND dolocal startPosition = getRandomPosition()local endPosition = getRandomPosition()local direction = endPosition - startPositionWorkspace:Raycast(startPosition,endPosition)enddebug.profileend()end
Confirma y soluciona el problema
Comience a probar la experiencia y abra el MicroProfiler nuevamente.
Observe cómo el MicroProfiler ahora muestra la etiqueta personalizada, indicando que esta función fue de hecho la causa raíz.
Detener la prueba de juego.
Elimina o comenta la función onStepped() y la conexión RunService.Stepped:Connect(onStepped).
Vuelva a probar la experiencia y verifique nuevamente el resumen de estadísticas de depuración.
Observe la enorme mejora en la tasa de marco y la correspondiente caída en los tiempos de marco en el gráfico de MicroProfiler.