Questo walkthrough mostra come utilizzare il MicroProfiler per trovare un aspetto problematico di un'esperienza e identificare la causa根. Scarica l'esperienza, Apri dal File in Studio, e segui.
Identificazione del problema
Dopo aver aperto l'esperienza in Studio, inizia a testarla con F5 o il pulsante Gioca .
Il tasso di frame si sente decente, ma non è così liso come dovrebbe essere per un'esperienza di questa dimensione e di questo tipo. Navigate to the Visualizza tab and click Sommario under Statistiche .
Nota che il tasso di frame è inferiore a 60 frame al secondo (FPS).
Apri il MicroProfiler premendo CtrlAltF6 ( ⌘1> ⌥1> 3> F6 3> ).
Nota che i tempi di frame sono coistenti — le bar sono circa dello stesso alto — quindi qualsiasi cosa sta causando il basso tasso di frame rate è in esecuzione ogni singolo frame invece di essere eseguito occasionalmente e causare picchi di tempo di frame.
Pausa il MicroProfiler premendo CtrlP ( ⌘P ). Pausing con la scorciatoia della tastiera apre 2> modalità dettagliata2> .
Fai clic e trascina per impastare il grafico. Nota come una certa attività nei thread del lavoratore sembri essere in uso molto tempo di elaborazione rispetto al Filoprincipale. Passa il mouse su RunService.Stepped e nota quanto tempo ci vuole per Renderizzare.
Le barre piegate nella cronologia mostrano una gerarchia di codice, quindi tieni il mouse su strati inferiori e inferiori per tentare di identificare il problema.
Nota il LocalScript Etichetta, che indica il nome dello script e il Raycast Etichetta, che indica che il problema potrebbe essere correlato al raycasting.
Creazione di etichetta Troubleshoot
Ora che il MicroProfiler ha fornito un punto di partenza, puoi risolvere il codice problematico.
Interrompi il test di riproduzione e filtra la finestra Explorer per localscript per trovare il file.
Una ricerca per raycast indica che questa parte del codice è probabilmente la causa della Prestazionedell'esperienza:
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)In particolare, puoi vedere che il codice sta facendo 1.500 rai al secondo in direzioni casuali.
Per verificare che questa parte del codice stia causando il ritardo di rendering, avvolgi i contenuti della funzione con 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
Conferma e Riparazione del problema
Inizia a testare l'esperienza e riapri il MicroProfiler.
Nota come il MicroProfiler ora mostra l'Etichetta, indicando che questa funzione era in realtà la causa根.
Interrompi il test di gioco.
Elimina o commenta la funzione onStepped() e la connessione RunService.Stepped:Connect(onStepped) .
Riavvia il test dell'esperienza e controlla la riassunzione delle statistiche di debug.
Nota il grande miglioramento della frequenza di frame e delle corrispondenti tempi di frame sul grafico MicroProfiler.