Przewodnik po MicroProfilerze

*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żywać MicroProfilera do znalezienia problematycznego aspektu gry i zidentyfikowania jego przyczyny. Pobierz grę, Otwórz z pliku w Studio i postępuj zgodnie z instrukcjami.


Zidentyfikuj problem

  1. Po otwarciu gry w Studio rozpocznij testowanie za pomocą F5 lub przycisku Play.

  2. Częstość klatek wydaje się być przyzwoita, ale nie tak płynna, jak powinna być dla gry o takim rozmiarze i zasięgu. Naciśnij CtrlShiftF5 (ShiftF5), aby wyświetlić nakładkę Podsumowanie wydajności.

    Podsumowanie wydajności pokazujące 45 FPS.

    Zauważ, że częstotliwość klatek spada poniżej 60 klatek na sekundę (FPS).

  3. Otwórz MicroProfilera, naciskając CtrlAltF6 (F6).

    MicroProfiler po jego otwarciu.

    Zauważ, że czasy klatek są spójne—słupki są mniej więcej tej samej wysokości—więc cokolwiek powoduje niską częstotliwość klatek, działa w każdej klatce, a nie sporadycznie, co powodowałoby skoki czasów klatek.

  4. Wstrzymaj MicroProfilera, naciskając CtrlP (P). Wstrzymanie za pomocą skrótu klawiaturowego otwiera tryb szczegółowy.

  5. Kliknij i przeciągnij, aby przesunąć wykres. Zauważ, jak jedno konkretne zadanie w wątkach roboczych wydaje się zużywać dużo czasu procesora w porównaniu z głównym wątkiem. Najedź na RunService.Stepped i zauważ, jak długo trwa renderowanie.

    Tryb szczegółowy z długimi etykietami dla procesów.
  6. Złożone słupki w harmonogramie wskazują hierarchię kodu, więc kontynuuj najazd na coraz niższe warstwy, aby spróbować zidentyfikować problem.

    Szczegóły po najechaniu dla różnych procesów, z podświetlonym LocalScript. Szczegóły po najechaniu dla różnych procesów, z podświetlonym Raycast.

    Zauważ etykietę LocalScript, która wskazuje nazwę skryptu, oraz etykietę Raycast, która wskazuje, że problem może być związany z raycastingiem.

Utwórz etykiety do rozwiązywania problemów

Teraz, gdy MicroProfiler dostarczył punkt wyjścia, możesz rozwiązać problematyczny kod.

  1. Zatrzymaj test gry i przefiltruj okno Eksploratora według localscript, aby znaleźć plik.

    Widok filtrowania w oknie Eksploratora.

    Wyszukiwanie raycast wskazuje, że ta część kodu prawdopodobnie jest winowajcą słabej wydajności gry:


    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)

    W szczególności widać, że kod rzuca 1 500 promieni na sekundę w losowych kierunkach.

  2. Aby potwierdzić, że ta część kodu powoduje opóźnienie w renderowaniu, otocz zawartość funkcji 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

Potwierdź i napraw problem

  1. Rozpocznij ponownie testowanie gry i otwórz MicroProfilera.

  2. Zauważ, jak MicroProfiler teraz pokazuje niestandardową etykietę, wskazując, że ta funkcja była faktycznie przyczyną problemu.

    Szczegółowy widok MicroProfilera z widoczną 'Raycast Spam'.
  3. Zatrzymaj test gry.

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

  5. Ponownie rozpocznij testowanie gry i sprawdź ponownie Podsumowanie wydajności.

    Podsumowanie wydajności pokazujące 60 FPS.

    Zauważ ogromną poprawę częstotliwości klatek i odpowiadający spadek czasów klatek na wykresie MicroProfilera.

©2026 Roblox Corporation. Nazwa Roblox, logo Roblox oraz hasło „Powering Imagination” należą do naszych zarejestrowanych i niezarejestrowanych znaków towarowych na terenie Stanów Zjednoczonych oraz w innych krajach.