การเดินทางผ่านไมโครโปรไฟล์

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

การสาธิตนี้แสดงวิธีการใช้ MicroProfiler เพื่อค้นหาปัญหาที่เกิดขึ้นในประสบการณ์และระบุสาเหตุรากของมันดาวน์โหลดประสบการณ์, เปิดจากไฟล์ ใน Studio และทำตามไป


ระบุปัญหา

  1. หลังจากที่คุณเปิดประสบการณ์ใน Studio เริ่มทดสอบโดยใช้ปุ่ม F5 หรือปุ่ม เล่น

  2. อัตราเฟรมรู้สึกดี แต่ไม่เรียบเนียนเท่าที่ควรสำหรับประสบการณ์ขนาดและขอบเขตนี้ไปที่แท็บ ดู และคลิก สรุป ใต้ สถิติ

    Debug stats summary showing 45 FPS.

    โปรดทราบว่าอัตราเฟรมต่ำกว่า 60 เฟรมต่อวินาที (ยิงมุมมองบุคคลที่หนึ่ง)

  3. เปิด MicroProfiler โดยกด CtrlAltF6 ( F6 ).

    The MicroProfiler after opening it.

    โปรดทราบว่าเวลากรอบคือ สอดคล้อง —แถบมีความสูงใกล้เคียงกัน—ดังนั้นสิ่งที่ทําให้อัตราเฟรมต่ําเกิดขึ้นคือการทํางานในแต่ละเฟรมที่แตกต่างกันแทนที่จะทํางานเป็นครั้งคราวและทําให้เวลาของเฟรมเพิ่มขึ้น

  4. หยุดการทำงานของ MicroProfiler โดยกด CtrlP ( P ).การหยุดชั่วคราวด้วยการลัดแป้นพิมพ์เปิดโหมดรายละเอียด

  5. คลิกและลากเพื่อขยับแผ่นกราฟสังเกตว่างานหนึ่งเฉพาะในกระทู้ผู้ทำงานดูเหมือนจะใช้เวลาในการประมวลผลมากกว่ากระทู้หลักเลื่อนเมาส์ไปที่ RunService.Stepped และสังเกตว่าใช้เวลานานแค่ไหนในการเรนเดอร์

    Detailed mode with long labels for processes.
  6. แถบซ้อนกันในเส้นเวลาบ่งบอกถึงลําดับของรหัสดังนั้นให้เลื่อนไปบนชั้นที่ต่ํากว่าและต่ํากว่าเพื่อลองระบุปัญหา

    On-hover details for various processes, with LocalScript highlighted. On-hover details for various processes, with Raycast highlighted.

    สังเกตป้ายชื่อ LocalScript ซึ่งระบุชื่อของสคริปต์ และป้ายชื่อ Raycast ซึ่งระบุว่าปัญหาอาจเกี่ยวข้องกับการส่งเรย์คาสต์

สร้างฉลากแก้ไขปัญหา

ตอนนี้ MicroProfiler ได้ให้จุดเริ่มต้นแล้วคุณสามารถแก้ไขปัญหารหัสได้

  1. หยุดการทดสอบการเล่นและกรองหน้าต่าง Explorer สําหรับ localscript เพื่อค้นหาไฟล์

    A view of filtering in the Explorer window.

    การค้นหา raycast การดำเนินการ:


    local RAYS_PER_SECOND = 1500
    local function onStepped()
    for _ = 1, RAYS_PER_SECOND do
    local startPosition = getRandomPosition()
    local endPosition = getRandomPosition()
    local direction = endPosition - startPosition
    Workspace:Raycast(
    startPosition,
    endPosition
    )
    end
    end
    RunService.Stepped:Connect(onStepped)

    โดยเฉพาะคุณสามารถดูได้ว่ารหัสกําลังโค้ง 1,500 รังสีต่อวินาทีในทิศทางสุ่ม

  2. เพื่อตรวจสอบว่าส่วนหนึ่งของโค้ดนี้ทำให้เกิดความล่าช้าในการเรนเดอร์ได้ ให้ห่อเนื้อหาของฟังก์ชันด้วย debug.profilebegin() และ debug.profileend() :


    local function onStepped()
    debug.profilebegin("Raycast Spam")
    for _ = 1, RAYS_PER_SECOND do
    local startPosition = getRandomPosition()
    local endPosition = getRandomPosition()
    local direction = endPosition - startPosition
    Workspace:Raycast(
    startPosition,
    endPosition
    )
    end
    debug.profileend()
    end

ยืนยันและแก้ไขปัญหา

  1. เริ่มทดสอบประสบการณ์และเปิด MicroProfiler อีกครั้ง

  2. สังเกตว่าตอนนี้ MicroProfiler แสดงฉลากที่กําหนดเองแล้วบ่งบอกว่าฟังก์ชันนี้เป็นสาเหตุรากฐานจริงๆ

    MicroProfiler detailed view with 'Raycast Spam' visible.
  3. หยุดการทดสอบการเล่น

  4. ลบหรือแสดงความคิดเห็นเกี่ยวกับฟังก์ชัน onStepped() และการเชื่อมต่อ RunService.Stepped:Connect(onStepped)

  5. เริ่มทดสอบประสบการณ์อีกครั้ง และตรวจสอบสรุปสถิติการแก้ไขข้อผิดพลาดอีกครั้ง

    Debug stats summary showing 60 FPS.

    สังเกตการปรับปรุงอย่างมากในอัตราเฟรมและการดรอปลงในเวลาเฟรมตามแผนภูมิ MicroProfiler