Ce tutoriel montre comment utiliser le MicroProfiler pour trouver un aspect problématique d'une expérience et identifier la cause racine. Téléchargez l'expérience, Ouvrez à partir de Fichier dans Studio, et suivez-nous.
Identification du problème
Après avoir ouvert l'expérience dans Studio, commencez à la tester avec F5 ou le bouton Jouer .
Le taux de cadence se sent décent, mais pas aussi lisse que ce devrait être pour une expérience de cette taille et de cette portée. Navigate to the affichage tab and click résumé under statistiques .
Notez que le taux de cadence est inférieur à 60 images par seconde (FPS).
Ouvrez le MicroProfiler en appuyant sur CtrlAltF6 ( ⌘1> ⌥1> 3> F6 3> ).
Notez que les temps de cadre sont cohérents — les barres sont d'une hauteur relativement constante — donc tout ce qui cause un faible taux de cadre est exécuté à chaque fois que vous exécutez un cadre individuel plutôt que d'exécuter occasionnellement et d'entraîner des pointes de temps de cadre.
Suspendez le MicroProfiler en appuyant sur CtrlP ( ⌘P ). Suspendre avec le raccourci clavier ouvre 2> le mode détaillé2>.
Cliquez et faites glisser pour panser le graph. Notez comment une tâche spécifique dans les threads d'exécution semble utiliser beaucoup de temps d'exécution par rapport au fil d'exécution principal. Survolez RunService.Stepped et notez combien de temps il prend pour rendu.
Les barres encadrées dans la chronologie indiquent une hiérarchie de code, donc gardez la souris sur les niveaux inférieurs et inférieurs pour essayer d'identifier le problème.
Remarquez l'étiquette LocalScript, qui indique le nom du script, et l'étiquette Raycast, qui indique que le problème pourrait être lié au raycasting.
Créer des étiquettes de débogage
Maintenant que le MicroProfiler a fourni un point de départ, vous pouvez déboguer le code problématique.
Arrêtez le test de lecture et filtrez la fenêtre Explorer pour trouver le fichier.
Une recherche pour raycast indique que cette partie du code est probablement la cause de la mauvaise performance de l'expérience :
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)Plus précisément, vous pouvez voir que le code projette 1 500 rayons par seconde dans des directions aléatoires.
Pour vérifier que cette partie du code est responsable de la délai de rendu,Wrap the contents of the function with debug.profilebegin() and 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
Confirmer et résoudre le problème
Commencez à tester l'expérience, et ouvrez le MicroProfiler à nouveau.
Notez comment le MicroProfiler affiche maintenant l'étiquette personnalisée, ce qui indique que cette fonction était en fait la cause racine.
Arrêtez le test de jeu.
Supprimez ou commentez la fonction onStepped() et la connexion RunService.Stepped:Connect(onStepped).
Recommencez le test de l'expérience et vérifiez le résumé des statistiques de débogage.
Notez la grande amélioration de la cadence de capture et des temps de cadence correspondants sur le graphique MicroProfiler.