Ten przewodnik pokazuje, jak użyć MicroProfiler, aby znaleźć problematyczny aspekt doświadczenia i zidentyfikować przyczynę korzenia. Załaduj doświadczenie, otwórz z pliku w Studio i podążaj.
Określanie problemu
Po otwarciu doświadczenia w Studio, zacznij go testować za pomocą F5 lub przycisku Graj.
Stawki klatkowe czują się przyzwoicie, ale nie są tak gładkie, jak powinny być dla doświadczenia tego rozmiaru i zakresu. Przejdź do zakładki Zobacz i kliknij Podsumowanie pod Statystykami.
Uwaga, że częstotliwość klatkowej jest niższa niż 60 klatki na sekundę (strzelanki FPS).
Otwórz mikro profilator naciskając CtrlAltF6 ( ⌘1> ⌥1> 3> F63> ).
Uwaga, że czasy ramy są konsystentne — linie są około takiej samej wysokości — więc cokolwiek powoduje niską szybkość ramy jest uruchomione na każdym ramie, a nie na rzadko i powoduje spadki czasu ramy.
Zatrzymaj Mikro profilera naciskając CtrlP ( ⌘P ). Zatrzymanie za pomocą klawiatury skrótów otwiera 2> tryb szczegółowy2> .
Kliknij i przeciągnij, aby ubrać grafikę. Zauważ, jak jeden szczególny zadanie w wątkach pracowników wydaje się używać dużo czasu wykonania w porównaniu z głównym wątkiem. Przytrzymaj RunService.Stepped i zauważ, jak długo trwa renderowanie.
Pozostałe klamry w kalendarzu okazują się być hierarchią kodu, więc przytrzymajте kursor na niższych i niższych poziomach, aby spróbować zidentyfikować problem.
Zauważ LocalScript etykietę, która wskazuje na nazwę skryptu, a Raycast etykietę, która wskazuje, że problem może być związany z raycastingiem.
Tworzenie problemów
Teraz, gdy MicroProfiler zapewnił punkt wyjścia, możesz rozwiązać problematyczny kod.
Zatrzymaj test odtwarzania i sfiltrowa okno Explorer dla localscript aby znaleźć plik.
Szukanie dla raycast wskazuje, że ta część kodu jest prawdopodobnie przyczyną niskiego wykonywaniedoświadczenia:
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)Specjalnie, możesz zobaczyć, że kod kastuje 1500 promieni na sekundę w losowych kierunkach.
Aby zweryfikować, czy ta część kodu powoduje opóźnienie renderowania, zapakuj zawartość funkcji za pomocą debug.profilebegin() i 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
Potwierdzanie i naprawianie problemu
Zacznij testować doświadczenie i ponownie otwórz MicroProfiler.
Zauważ, jak MicroProfiler teraz wyświetla niestandardowy label, wskazując, że ta funkcja była rzeczywiście przyczyną korzenia.
Zatrzymaj test odtwarzania.
Usuń lub skomentuj funkcję onStepped() i połączenie RunService.Stepped:Connect(onStepped).
Zacznij ponownie testować doświadczenie i sprawdź ponownie statystyki debugowania.
Zauważ ogromną poprawę wskaźnika klatkowego i odpowiedniego spadku czasu klatkowego na grafiku MicroProfiler.