เส้นทางนี้แสดงวิธีการใช้ MicroProfiler เพื่อค้นหาด้านล่างของประสบการณ์และระบุสาเหตุการณ์ที่เป็นปัญหา ดาวน์โหลดประสบการณ์, เปิดจากไฟล์ ใน Studio, และติดตามต่อไป
ระบุปัญหา
หลังจากที่คุณเปิดประสบการณ์ใน Studio คุณจะเริ่มทดสอบด้วย F5 หรือปุ่ม เล่น
อัตราเฟรมรู้สึกดี แต่ไม่เรียบเนียนเหมือนที่ควรจะเป็นสำหรับประสบการณ์ขนาดนี้และสเกล ไปที่แท็บ ดู และคลิก สรุป ภายใต้ สถิติ
หมายเหตุว่าอัตราเฟรมต่ำกว่า 60 เฟรมต่อวินาที (ยิงมุมมองบุคคลที่หนึ่ง)
เปิด MicroProfiler โดยกด CtrlAltF6 ( ⌘1> ⌥1> 3> F63> )
หมายเหตุว่าเวลาเฟรมเป็นเวลาเฟรมที่ เป็นเวลาเดียวกัน — บาร์เป็นความสูงเกือบเท่ากัน — ดังนั้นสิ่งที่ทำให้อัตราเฟรมต่ำจะทำงานทุกเฟรมเดี่ยวกันโดยไม่ต้องทำงานเป็นระยะเวลาสักครู่และทำให้
หยุด MicroProfiler โดยการกด CtrlP ( ⌘P ) การหยุดชั่วคราวด้วยลัดเว้นวรรคเปิด 2> โหมดรายละเอียด2> .
คลิกและลากเพื่อดึงกราฟิก หมายเหตุว่าการทำงานที่เฉพาะในเส้นทางกระบวนการนี้ใช้เวลาในการประมวลผลมากเมื่อเปรียบเทียบกับเส้นทางกระบวนการหลัก โปรดอย่าลากเหนือ RunService.Stepped แ
เส้นสแน็ปในเวลาชี้นำทางแสดงถึงระดับรหัส ดังนั้นจงเลื่อนเมาส์ลงและขึ้นเพื่อลองตรวจสอบปัญหา
หมายเหตุฉลาก LocalScript ซึ่งระบุชื่อของสคริปต์และฉลาก Raycast ซึ่งระบุว่าปัญหานี้อาจเกี่ยวข้องกับการเรนเดอร์
การสร้างชื่อเรื่อง Troubleshoot
ตอนนี้ 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