Mikro profilowanie droga

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

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

  1. Po otwarciu doświadczenia w Studio, zacznij go testować za pomocą F5 lub przycisku Graj.

  2. 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.

    Debug stats summary showing 45 FPS.

    Uwaga, że częstotliwość klatkowej jest niższa niż 60 klatki na sekundę (strzelanki FPS).

  3. Otwórz mikro profilator naciskając CtrlAltF6 ( 1> ⌥1> 3> F63> ).

    The MicroProfiler after opening it.

    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.

  4. Zatrzymaj Mikro profilera naciskając CtrlP ( P ). Zatrzymanie za pomocą klawiatury skrótów otwiera 2> tryb szczegółowy2> .

  5. 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.

    Detailed mode with long labels for processes.
  6. 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.

    On-hover details for various processes, with LocalScript highlighted. On-hover details for various processes, with Raycast highlighted.

    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.

  1. Zatrzymaj test odtwarzania i sfiltrowa okno Explorer dla localscript aby znaleźć plik.

    A view of filtering in the Explorer window.

    Szukanie dla raycast wskazuje, że ta część kodu jest prawdopodobnie przyczyną niskiego wykonywaniedoświadczenia:


    local RAYS_PER_SECOND = 1500
    local function onStepped()
    for _ = 1, RAYS_PER_SECOND do
    local startPosition = getRandomPosition()
    local endPosition = getRandomPosition()
    local direction = endPosition - startPosition
    Workspace:Raycast(
    startPosition,
    endPosition
    )
    end
    end
    RunService.Stepped:Connect(onStepped)

    Specjalnie, możesz zobaczyć, że kod kastuje 1500 promieni na sekundę w losowych kierunkach.

  2. 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 do
    local startPosition = getRandomPosition()
    local endPosition = getRandomPosition()
    local direction = endPosition - startPosition
    Workspace:Raycast(
    startPosition,
    endPosition
    )
    end
    debug.profileend()
    end

Potwierdzanie i naprawianie problemu

  1. Zacznij testować doświadczenie i ponownie otwórz MicroProfiler.

  2. Zauważ, jak MicroProfiler teraz wyświetla niestandardowy label, wskazując, że ta funkcja była rzeczywiście przyczyną korzenia.

    MicroProfiler detailed view with 'Raycast Spam' visible.
  3. Zatrzymaj test odtwarzania.

  4. Usuń lub skomentuj funkcję onStepped() i połączenie RunService.Stepped:Connect(onStepped).

  5. Zacznij ponownie testować doświadczenie i sprawdź ponownie statystyki debugowania.

    Debug stats summary showing 60 FPS.

    Zauważ ogromną poprawę wskaźnika klatkowego i odpowiedniego spadku czasu klatkowego na grafiku MicroProfiler.