Hướng dẫn này cho bạn thấy cách sử dụng MicroProfiler để tìm một mặt trần bị vấn đề trong 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 ở Studio, bắt đầu kiểm tra nó bằng cách sử dụng F5 hoặc nút Chơi .
Tỷ lệ khung cảm thấy ổn, nhưng không mịn màng như nó nên cho một trải nghiệm cỡ này và quy mô. Navigate to the Xem tab and click Tổng kết under Thống kê.
Lưu ý rằng tỷ lệ khung dưới 60 khung mỗi giây (FPS).
Mở MicroProfiler bằng cách nhấn CtrlAltF6 ( ⌘1> ⌥1> 3> F63> ).
Ghi chú rằng thời gian khung là tương tự — các thanh dài khoảng cùng một chiều cao — vì vậy bất kỳ điều gây ra tỷ lệ thấp khung sẽ chạy mỗi khung một khung, chứ không phải chạy mỗi khung một lần và gây ra những đợt trễ khung.
Tạm dừng MicroProfiler bằng cách nhấn CtrlP ( ⌘P ). Tạm dừng với các phím bàn phím trượt tuyết để mở 2> chế độ chi tiết2> .
Nhấp và kéo để xoay trục. Ghi nhớ cách một công việc cụ thể trong các luồng người dùng dường như đang sử dụng rất nhiều thời gian xử lý so với luồng chính. Hover over RunService.Stepped and note how long it's taking to render.
Các thanh trượt trong thời gian thực cho thấy một chuỗi các mã, vì vậy giữ hover trên các thanh dưới và dưới để cố gắng xác định vấn đề.
Ghi nhớ nhãn LocalScript, đây là một nhãn cho biết tên của script, và nhãn Raycast, đây là một nhãn cho biết rằng vấn đề có thể liên quan đến việc dùng raycast.
Tạo nhãn Troubleshoot
Bây giờ MicroProfiler đã cung cấp một điểm xuất phát, bạn có thể xử lý mã bị lỗi.
Dừng lại test chơi và lọc cửa sổ Explorer để tìm localscript để tìm tập tin.
Một cuộc tìm kiếm cho raycast指示代码的此部分 có lẽ là nguyên nhân gây ra hiệu lựcsuất thấp 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 hướng ngẫu nhiên.
Để xác minh rằng phần mã này gây ra sự trễ xử xử lý, bọc nội dung của hàm 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 chữa vấn đề
Bắt đầu kiểm tra trải nghiệm và mở lại MicroProfiler.
Lưu ý là MicroProfiler bây giờ hiển thị nhãn tùy chỉnh, cho thấy rằng chức năng này thực sự là nguyên nhân gây ra.
Dừng lại bài kiểm tra chơi.
Xóa hoặc bình luận các hàm 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 tổng kết chỉ số debug.
Ghi nhớ sự cải thiện lớn về tỷ lệ khung hình và thời gian thả tương ứng trên bảng MicroProfiler.