การใช้งานนี้แสดงให้เห็นวิธีการใช้ MicroProfiler เพื่อค้นหาปัญหาบางประการในเกมและระบุสาเหตุที่แท้จริง ดาวน์โหลดเกม เลือก เปิดจากไฟล์ ใน Studio และทำตามขั้นตอนต่อไปนี้
ระบุปัญหา
หลังจากคุณเปิดเกมใน Studio ให้เริ่มทดสอบโดยกด F5 หรือปุ่ม เล่น
อัตราเฟรมรู้สึกดี แต่ไม่ราบรื่นเท่าที่ควรสำหรับเกมในขนาดและขอบเขตนี้ กด CtrlShiftF5 (⌘ShiftF5) เพื่อแสดงแผ่นข้อมูล สรุปประสิทธิภาพ

หมายเหตุว่าอัตราเฟรมต่ำกว่า 60 เฟรมต่อวินาที (FPS)
เปิด MicroProfiler โดยกด CtrlAltF6 (⌘⌥F6)

หมายเหตุว่าเวลาการประมวลผลมี ความสม่ำเสมอ—แท่งมีความสูงใกล้เคียงกัน—ดังนั้นสิ่งที่ทำให้อัตราเฟรมต่ำจึงทำงานในทุกเฟรมแทนที่จะทำงานเป็นบางครั้งและทำให้เกิดการกระโดดของเวลาเฟรม
หยุด MicroProfiler โดยกด CtrlP (⌘P) การหยุดด้วยทางลัดแป้นพิมพ์จะเปิดโหมด โหมดละเอียด
คลิกและลากเพื่อเลื่อนกราฟ หมายเหตุว่างานเฉพาะงานหนึ่งในเธรดลูกค้าดูเหมือนจะใช้เวลาในการประมวลผลค่อนข้างมากเมื่อเปรียบเทียบกับเธรดหลัก เลื่อนเมาส์ไปที่ RunService.Stepped และสังเกตว่ามันใช้เวลานานแค่ไหนในการเรนเดอร์

แท่งซ้อนในไทม์ไลน์บ่งชี้ถึงลำดับชั้นของโค้ด ดังนั้นให้นำเมาส์ไปวางไว้ที่ชั้นที่ต่ำและต่ำกว่าต่อไปเพื่อพยายามระบุปัญหา


หมายเหตุว่าชื่อป้าย LocalScript ซึ่งบ่งชี้ชื่อของสคริปต์ และชื่อป้าย Raycast ซึ่งบ่งชี้ว่าปัญหาอาจเกี่ยวข้องกับการเรย์แคส
สร้างป้ายสำหรับการแก้ไขปัญหา
เมื่อ MicroProfiler ได้ให้จุดเริ่มต้น คุณสามารถแก้ไขโค้ดที่มีปัญหาได้
หยุดการทดสอบการเล่นและกรองหน้าต่าง Explorer เพื่อค้นหา 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 อีกครั้ง
หมายเหตุว่า MicroProfiler ตอนนี้แสดงป้ายกำกับที่กำหนดเอง ซึ่งระบุว่าฟังก์ชันนี้คือสาเหตุที่แท้จริง

หยุดการทดสอบการเล่น
ลบหรือแสดงความคิดเห็นในฟังก์ชัน onStepped() และการเชื่อมต่อ RunService.Stepped:Connect(onStepped)
เริ่มทดสอบเกมอีกครั้ง และตรวจสอบ สรุปประสิทธิภาพ อีกครั้ง

หมายเหตุการปรับปรุงที่ยิ่งใหญ่ในอัตราเฟรมและการลดลงที่สอดคล้องกันในเวลาเฟรมในกราฟ MicroProfiler