Hướng dẫn này cho thấy cách sử dụng MicroProfiler để tìm một khía cạnh gây vấn đề của một trải nghiệm và xác định nguyên nhân gốc.Tải trải nghiệm, Mở từ File trong Studio, và theo dõi.
Xác định vấn đề
Sau khi bạn mở trải nghiệm trong Studio, bắt đầu kiểm tra nó với F5 hoặc nút Chơi .
Tốc độ khung cảm thấy tốt, nhưng không mượt mà như nên có đối với trải nghiệm có quy mô và phạm vi này.Di chuyển đến tab Xem và nhấp vào Tổng kết dưới Thống kê.
Lưu ý rằng tốc độ khung là dưới 60 khung mỗi giây (FPS).
Mở MicroProfiler bằng cách nhấn CtrlAltF6 ( ⌘⌥F6 ).
Lưu ý rằng thời gian khung là thống nhất — các thanh có chiều cao tương tự — vì vậy bất kỳ thứ gì gây ra tỷ lệ khung thấp là chạy mỗi khung chứ không phải chạy thỉnh thoảng và gây ra đỉnh thời gian khung.
Tạm dừng MicroProfiler bằng cách nhấn CtrlP ( ⌘P ).Tạm dừng với phím tắt bàn phím mở chế độ chi tiết .
Nhấp và kéo để di chuyển bảng.Lưu ý cách một nhiệm vụ cụ thể trong các luồng công việc dường như đang sử dụng nhiều thời gian xử lý so với luồng chính.Chuyển qua RunService.Stepped và ghi lại thời gian render bao lâu.
Các thanh xếp chồng trong thời gian biểu cho thấy một hệ thống các mã, vì vậy hãy tiếp tục lướt qua các lớp thấp hơn và thấp hơn để thử xác định vấn đề.
Lưu ý nhãn LocalScript , cho thấy tên của kịch bản, và nhãn Raycast , cho thấy rằng vấn đề có thể liên quan đến raycasting.
Tạo nhãn giải quyết sự cố
Bây giờ khi MicroProfiler đã cung cấp một điểm khởi động, bạn có thể giải quyết mã bị lỗi.
Dừng thử nghiệm chơi và lọc cửa sổ Explorer cho localscript để tìm tập tin.
Một tìm kiếm cho raycast cho thấy rằng phần mã này có lẽ là nguyên nhân gây ra hiệu lựcsuất kém của trải nghiệm:
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)Cụ thể, bạn có thể thấy rằng mã đang phát ra 1,500 tia mỗi giây theo các hướng ngẫu nhiên.
Để xác minh rằng phần mã này gây ra thời gian trì hoãn render, bọc nội dung của chức năng với debug.profilebegin() và 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
Xác nhận và sửa lỗi
Bắt đầu kiểm tra trải nghiệm, và mở lại MicroProfiler.
Lưu ý cách MicroProfiler hiển thị nhãn tùy chỉnh, cho thấy chức năng này thực sự là nguyên nhân gốc.
Dừng thử nghiệm chơi.
Xóa hoặc bình luận chức năng onStepped() và kết nối RunService.Stepped:Connect(onStepped).
Bắt đầu kiểm tra trải nghiệm một lần nữa, và kiểm tra lại tổng kết chỉ số gỡ lỗi.
Lưu ý sự cải thiện lớn về tốc độ khung và sự giảm xuống tương ứng về thời gian khung trên đồ thị MicroProfiler.