마이크로프로파일러 워크스루

*이 콘텐츠는 AI(베타)를 사용해 번역되었으며, 오류가 있을 수 있습니다. 이 페이지를 영어로 보려면 여기를 클릭하세요.

이 가이드에서는 MicroProfiler를 사용하여 경험의 문제적인 측면을 찾아 근본 원인을 식별하는 방법을 보여줍니다.경험을 다운로드하고, 파일에서 열기 를 스튜디오에서 열고 따라가세요.


문제 식별

  1. Studio에서 경험을 열고 나면 F5 또는 플레이 버튼으로 테스트를 시작하십시오.

  2. 프레임 속도가 적절하게 느껴지지만, 이 크기와 범위의 경험에 적합한 부드러움은 아닙니다.보기 탭으로 이동하고 스탯 아래에서 요약을 클릭하십시오.

    Debug stats summary showing 45 FPS.

    프레임 속도가 초당 60프레임(FPS) 미만임을 참고하십시오.

  3. Open the MicroProfiler by pressing CtrlAltF6 ( F6 ).

    The MicroProfiler after opening it.

    프레임 시간이 일관적 임을 알아두십시오 — 바는 대략 같은 높이입니다 — 따라서 낮은 프레임 속도를 유발하는 것은 간혹 실행하고 프레임 시간 스파이크를 일으키는 것이 아니라 모든 프레임을 실행하는 것입니다.

  4. 마이크로프로파일러를 중지하려면 CtrlP ( P )를 누르십시오.키보드 단축키로 일시 중지하면 세부 모드가 열립니다.

  5. 클릭하고 드래그하여 그래프를 이동합니다.작업자 스레드의 특정 작업이 메인 스레드에 비해 많은 처리 시간을 사용하고 있는 것처럼 보이는지 확인하십시오.RunService.Stepped 위로 마우스를 이동하고 렌더링에 소요되는 시간을 확인하십시오.

    Detailed mode with long labels for processes.
  6. 타임라인의 쌓인 막대는 코드의 계층을 나타내므로 문제를 식별하기 위해 낮은 레이어와 낮은 레이어를 계속 호버하세요.

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

    스크립트의 이름을 나타내는 LocalScript 레이블과 문제가 레이캐스팅과 관련될 수 있음을 나타내는 Raycast 레이블을 참고하십시오.

문제 해결 레이블 만들기

이제 MicroProfiler가 시작점을 제공했으므로 문제가 있는 코드를 해결할 수 있습니다.

  1. 플레이 테스트를 중지하고 탐색기 창을 localscript 검색하여 파일을 찾으세요.

    A view of filtering in the Explorer window.

    raycast에 대한 검색은 이 코드 부분이 경험의 저조한 이행원인이 아마도 될 것임을 나타냅니다.


    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)

    특히, 코드가 무작위 방향으로 초당 1,500개의 광선을 캐스팅하고 있음을 볼 수 있습니다.

  2. 이 코드 부분이 렌더링 지연을 일으키는지 확인하려면 함수의 내용을 debug.profilebegin()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

문제 확인 및 해결

  1. 경험을 테스트하기 시작하고 다시 MicroProfiler를 엽니다.

  2. 마이크로프로파일러가 이제 사용자 지정 레이블을 표시하여 이 함수가 실제로 근본 원인임을 나타냈는지 확인하십시오.

    MicroProfiler detailed view with 'Raycast Spam' visible.
  3. 플레이 테스트 중지.

  4. onStepped() 함수와 RunService.Stepped:Connect(onStepped) 연결을 삭제하거나 주석으로 처리합니다.

  5. 다시 경험 테스트를 시작하고 디버그 통계 요약을 다시 확인하십시오.

    Debug stats summary showing 60 FPS.

    마이크로프로파일러 그래프에서 프레임 속도와 해당 프레임 시간의 큰 향상을 참고하십시오.