Este tutorial mostra como usar o MicroProfiler para encontrar um aspecto problemático de uma experiência e identificar a causa raiz.Baixe a experiência, Abrir a partir do Arquivo no Studio e siga em frente.
Identifique o problema
Depois de abrir a experiência no Studio, comece a testá-la com F5 ou o botão Jogar .
A taxa de quadros parece decente, mas não tão suave como deveria ser para uma experiência deste tamanho e alcance.Navegue até a aba Ver e clique em Resumo sob Estatísticas.
Observe que a taxa de quadros está abaixo de 60 quadros por segundo (FPS).
Abra o MicroProfiler pressionando CtrlAltF6 ( ⌘⌥F6 ).
Observe que os tempos de quadro são consistentes —as barras são aproximadamente da mesma altura—então, o que quer que esteja causando a baixa taxa de quadros está executando cada quadro individualmente, em oposição a executar ocasionalmente e causar picos de tempo de quadro.
Pause o MicroProfiler pressionando CtrlP ( ⌘P ).Pausar com o atalho de teclado abre modo detalhado.
Clique e arraste para mover o gráfico.Observe como uma tarefa específica nos subprocessos do trabalhador parece usar muito tempo de processamento em comparação com o Subprocessoprincipal.Passe o mouse sobre RunService.Stepped e note quanto tempo está levando para renderizar.
Barras empilhadas na linha do tempo indicam uma hierarquia de código, então continue pairando em camadas mais baixas e mais baixas para tentar identificar o problema.
Observe a etiqueta / rótuloLocalScript que indica o nome do script e a etiqueta / rótuloRaycast que indica que o problema pode estar relacionado ao raycasting.
Criar rótulos de solução de problemas
Agora que o MicroProfiler forneceu um ponto de partida, você pode solucionar o código problemático.
Pare o teste de reprodução e filtre a janela do Explorer por localscript para encontrar o arquivo.
Uma busca por raycast indica que esta parte do código é provavelmente o culpado pela má performance da experiência:
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)Especificamente, você pode ver que o código está lançando 1.500 raios por segundo em direções aleatórias.
Para verificar se essa parte do código está causando o atraso de renderização, envolva o conteúdo da função com debug.profilebegin() e 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
Confirme e corrija o problema
Comece a testar a experiência e abra o MicroProfiler novamente.
Observe como o MicroProfiler agora mostra a etiqueta etiqueta / rótulo, indicando que essa função foi de fato a causa raiz.
Pare o teste de jogo.
Exclua ou comente a função onStepped() e a conexão RunService.Stepped:Connect(onStepped).
Comece a testar a experiência novamente e verifique o resumo de estatísticas de depuração novamente.
Observe a enorme melhoria na taxa de quadros e queda correspondente nos tempos de quadros no gráfico do MicroProfiler.