이 가이드에서는 MicroProfiler를 사용하여 경험의 문제적인 측면을 찾아 근본 원인을 식별하는 방법을 보여줍니다.경험을 다운로드하고, 파일에서 열기 를 스튜디오에서 열고 따라가세요.
문제 식별
Studio에서 경험을 열고 나면 F5 또는 플레이 버튼으로 테스트를 시작하십시오.
프레임 속도가 적절하게 느껴지지만, 이 크기와 범위의 경험에 적합한 부드러움은 아닙니다.보기 탭으로 이동하고 스탯 아래에서 요약을 클릭하십시오.
프레임 속도가 초당 60프레임(FPS) 미만임을 참고하십시오.
Open the MicroProfiler by pressing CtrlAltF6 ( ⌘⌥F6 ).
프레임 시간이 일관적 임을 알아두십시오 — 바는 대략 같은 높이입니다 — 따라서 낮은 프레임 속도를 유발하는 것은 간혹 실행하고 프레임 시간 스파이크를 일으키는 것이 아니라 모든 프레임을 실행하는 것입니다.
마이크로프로파일러를 중지하려면 CtrlP ( ⌘P )를 누르십시오.키보드 단축키로 일시 중지하면 세부 모드가 열립니다.
클릭하고 드래그하여 그래프를 이동합니다.작업자 스레드의 특정 작업이 메인 스레드에 비해 많은 처리 시간을 사용하고 있는 것처럼 보이는지 확인하십시오.RunService.Stepped 위로 마우스를 이동하고 렌더링에 소요되는 시간을 확인하십시오.
타임라인의 쌓인 막대는 코드의 계층을 나타내므로 문제를 식별하기 위해 낮은 레이어와 낮은 레이어를 계속 호버하세요.
스크립트의 이름을 나타내는 LocalScript 레이블과 문제가 레이캐스팅과 관련될 수 있음을 나타내는 Raycast 레이블을 참고하십시오.
문제 해결 레이블 만들기
이제 MicroProfiler가 시작점을 제공했으므로 문제가 있는 코드를 해결할 수 있습니다.
플레이 테스트를 중지하고 탐색기 창을 localscript 검색하여 파일을 찾으세요.
raycast에 대한 검색은 이 코드 부분이 경험의 저조한 이행원인이 아마도 될 것임을 나타냅니다.
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)특히, 코드가 무작위 방향으로 초당 1,500개의 광선을 캐스팅하고 있음을 볼 수 있습니다.
이 코드 부분이 렌더링 지연을 일으키는지 확인하려면 함수의 내용을 debug.profilebegin() 및 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
문제 확인 및 해결
경험을 테스트하기 시작하고 다시 MicroProfiler를 엽니다.
마이크로프로파일러가 이제 사용자 지정 레이블을 표시하여 이 함수가 실제로 근본 원인임을 나타냈는지 확인하십시오.
플레이 테스트 중지.
onStepped() 함수와 RunService.Stepped:Connect(onStepped) 연결을 삭제하거나 주석으로 처리합니다.
다시 경험 테스트를 시작하고 디버그 통계 요약을 다시 확인하십시오.
마이크로프로파일러 그래프에서 프레임 속도와 해당 프레임 시간의 큰 향상을 참고하십시오.