Dieser Leitfaden zeigt, wie man den MicroProfiler verwendet, um einen problematischen Aspekt eines Erlebnisses zu finden und die Ursache zu identifizieren.Laden Sie das Erlebnis herunter, Öffnen aus Datei in Studio und folgen Sie.
Identifiziere das Problem
Nachdem du das Erlebnis in Studio geöffnet hast, starte die Tests mit F5 oder der Spiel Schaltfläche.
Die Bildrate fühlt sich anständig an, ist aber nicht so glatt, wie es für ein Erlebnis dieser Größe und Reichweite sein sollte.Navigiere zur Ansicht -Registerkarte und klicke auf Zusammenfassung unter Statistiken.
Beachten Sie, dass die Bildrate unter 60 Bildern pro Sekunde (Ego-Shooter) liegt.
Öffne den MicroProfiler, indem du CtrlAltF6 (⌘⌥F6 ) drückst.
Beachten Sie, dass die Rahmenzeiten konsistent sind — die Balken haben ungefähr die gleiche Höhe—so ist alles, was die niedrige Rahmenrate verursacht, jeden einzelnen Frame läuft, anstatt gelegentlich zu laufen und Rahmenzeitspitzen zu verursachen.
Pause den Mikroprofiler, indem du CtrlP ( ⌘P ) drückst.Pausieren mit der Tastaturkürzel öffnet detaillierten Modus.
Klicke und ziehe, um die Grafik zu verschieben.Beachten Sie, wie eine bestimmte Aufgabe in den Arbeiter Threads viel Verarbeitungszeit im Vergleich zum Hauptthread zu verwenden scheint.Bewegen Sie den Mauszeiger über RunService.Stepped und beachten Sie, wie lange es dauert, bis es rendernwird.
Gestapelte Balken in der Zeitachse zeigen eine Hierarchie von Codesan, also halte dich weiter auf den niedrigeren und niedrigeren Ebenen, um das Problem zu identifizieren.
Beachten Sie das Beschriftung, das den Namen des Skript, das. PL: die Skriptsanzeigt, und das Beschriftung, das anzeigt, dass das Problem möglicherweise mit Raycasting zusammenhängt.
Erstelle Fehlersuche-Etiketten
Jetzt, da der MicroProfiler einen Ausgangspunkt bereitgestellt hat, kannst du das problematische Codeslösen.
Stoppe den Spieltest und filtere das Explorer-Fenster für localscript, um die Datei zu finden.
Eine Suche nach raycast zeigt an, dass dieser Teil des Codes wahrscheinlich der Übeltäter für die schlechte Erfüllungdes Erlebnisses ist:
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)Speziell kannst du sehen, dass der Code 1.500 Strahlen pro Sekunde in zufälligen Richtungen auswirft.
Um zu überprüfen, dass dieser Teil des Codes die Rendering-Verzögerung verursacht, wickle den Inhalt der Funktion mit debug.profilebegin() und debug.profileend() ein:
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
Bestätigen und beheben Sie das Problem
Starte die Erlebnisund öffne den MicroProfiler erneut.
Beachten Sie, wie der MicroProfiler jetzt das benutzerdefinierte Beschriftunganzeigt, was darauf hinweist, dass diese Funktion tatsächlich die Ursache war.
Stoppe den Spieltest.
Löschen oder kommentieren Sie die onStepped() Funktion und die RunService.Stepped:Connect(onStepped) Verbindung.
Starte die Erfahrung erneut zum Testen und überprüfe erneut die Debug-Statistiksumme.
Beachten Sie die enorme Verbesserung der Framerate und der entsprechenden Abnahme der Frametimes auf dem Mikroprofilierungsdiagramm.