Este tutorial muestra cómo usar el MicroProfiler para encontrar un aspecto problemático de una experiencia y identificar la causa raíz. Descargue la experiencia, Abra desde el archivo en Studio, y siga.
Identificando el problema
Después de abrir la experiencia en Studio, comience a probarla con F5 o el botón Jugar .
La tasa de fotogramas se siente decente, pero no tan suave como debería ser para una experiencia de este tamaño y alcance. Navega a la pestaña Ver y haz clic en Resumen debajo de Estadísticas .
Nota que la tasa de marco está por debajo de 60 marcos por segundo (FPS).
Abre el MicroProfiler presionando CtrlAltF6 ( ⌘1> ⌥1> 3> F6 3> ).
Nota que los tiempos de marco son consistentes — las barras son aproximadamente del mismo tamaño —, por lo que cualquier cosa que esté causando la baja tasa de marco está ejecutando cada marco en lugar de ejecutar ocasionalmente y causar picos de tiempo de marco.
Pausa el MicroProfiler presionando CtrlP ( ⌘P ). Pausando con el atajo de teclado se abre 2> modo detallado2> .
Haga clic y arrastre para acotar el gráfico. Observe cómo una tarea particular en los hilos de trabajo parece estar usando mucho tiempo de procesamiento en comparación con el subprocesoprincipal. Pase el cursor sobre RunService.Stepped y observe cuánto tiempo está tardando en Renderizar.
Las barras acumuladas en el tiempo muestran una jerarquía de código, así que mantenga el cursor en las capas inferiores y inferiores para intentar identificar el problema.
Nota la etiqueta LocalScript, que indica el nombre del script, y la etiqueta Raycast, que indica que el problema puede estar relacionado con el intersección rayo-superficie, emisión de rayos.
Creando etiquetas de solución de problemos
Ahora que el MicroProfiler ha proporcionado un punto de partida, puede solucionar el código problemático.
Detenga la prueba de juego y filtre la ventana Explorer para encontrar el archivo.
Una búsqueda para 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 particular, puede ver que el código está castigando 1,500 rayos por segundo en direcciones aleatorias.
Para verificar que esta parte del código está causando el retraso de renderizado, envuelve 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
Confirmando y solucionando el problema
Comience a probar la experiencia y abra el MicroProfiler de nuevo.
Nota cómo el MicroProfiler ahora muestra la etiqueta personalizada, indicando que esta función era en realidad la causa raíz.
Detén la prueba de juego.
Elimina o comenta la función onStepped() y la conexión RunService.Stepped:Connect(onStepped) .
Comience a probar la experiencia nuevamente y revise el resumen de estadísticas de diagnóstico.
Nota la gran mejora en la tasa de fotogramas por segundo y la correspondiente disminución en los tiempos de fotograma en el gráfico MicroProfiler.