ต่อไปนี้คือรายการแท็กทั่วไปใน MicroProfiler ที่จัดกลุ่มตามหมวดหมู่ แท็กยังเรียกได้ว่าเป็นงาน, ตัวจับเวลา, ขอบเขต, กระบวนการ และป้ายกำกับ ไม่ว่าอะไรจะชื่อ มันแสดงถึงหน่วยของงาน
การทำความเข้าใจแท็กเหล่านี้จะช่วยให้คุณระบุโค้ดที่มีปัญหาในเกมของคุณได้ ตารางแสดงให้เห็นถึงป้ายกำกับแท็ก, คำอธิบาย, และคำแนะนำในการปรับปรุงประสิทธิภาพและเพิ่มประสิทธิภาพเกมของคุณ
การนอนหลับ
เมื่อเธรดไม่ได้ทำงานอยู่ พวกเขาจะเข้าสู่สถานะการนอนหลับ ด้วยแท็กเพื่อบ่งบอกเวลาในการนอนหลับของเธรด ในเวลาใดก็ตาม การที่เธรดคนทำงานส่วนใหญ่จะอยู่ในสถานะการนอนหลับเป็นเรื่องที่เกิดขึ้นบ่อยมาก
การนำทาง
| ป้ายกำกับ | คำอธิบาย | คำแนะนำด้านประสิทธิภาพ |
|---|---|---|
| rasterizeTile | อัปเดตแผ่นนำทางที่จำเป็นสำหรับคำขอการค้นหาวิธีการ โดยทั่วไปจะตามมาด้วย computePath ซึ่งต้องการให้แผ่นเหล่านั้นทันสมัย ตาม NavigationJob/preprocess บนเธรดหลัก | ลดจำนวนการทำให้แผ่นนำทางไม่ถูกต้อง เนื่องจากจะทำให้ต้องคำนวณเส้นทางใหม่ นี่เกิดจากส่วนที่ไม่สามารถนำทางได้ที่เคลื่อนที่ |
| computePath | คำนวณเส้นทาง โดยทั่วไปจะเกิดขึ้นหลังจาก rasterizeTile | ลดจำนวนและขนาดของการเรียก Path:ComputeAsync() พยายามใช้เส้นทางซ้ำสำหรับหลายตัวแทนหากคาดว่าจะเริ่ม/สิ้นสุดจากสถานที่ที่คล้ายกัน |
| preprocess/getPrimitivesOverlapping | รวบรวมเรขาคณิตโลกสำหรับแต่ละแผ่นนำทาง และกำหนดตารางเวลางานการทำให้เป็นเรขาคณิตที่จะดำเนินการโดยเธรดการค้นหาวิธีการ | ลดจำนวนส่วน |
การเคลื่อนไหวและฮิวมานอยด์
| ป้ายกำกับ | คำอธิบาย | คำแนะนำด้านประสิทธิภาพ |
|---|---|---|
| Simulation/gameStepped | การประมวลผลของวัตถุเฉพาะของเกมเช่น Humanoids, Animations และการเรียกกลับจับชีพจร | ดูป้ายกำกับ gameStepped ด้านล่าง |
| Simulation/gameStepped/stepHumanoid | การเปลี่ยนสถานะและการเคลื่อนไหวของ Humanoid | ลดจำนวน Humanoids หรือปิดการใช้งานสถานะ Humanoid บน NPC ที่ไม่ต้องการ เช่น Climbing หรือ Swimming ลดการเรียกกลับไปที่ Humanoid.StateChanged หรือการเปลี่ยนแปลงสถานะเช่น Running หรือ Died |
| Simulation/gameStepped/stepAnimation | Animators จะก้าวไปข้างหน้าในแอนิเมชันที่กำลังเล่นอยู่ | ลดจำนวน Animators หรือข้อต่อที่เคลื่อนไหวเพื่อลดภาระงานของขั้นตอนนี้ ลดจำนวนการเรียกกลับไปที่เหตุการณ์แอนิเมชันเช่น AnimationTrack.KeyframeReached หรือ AnimationTrack.Ended |
| Simulation/gameStepped/RunService.Stepped | รันฟังก์ชันที่เชื่อมต่อกับเหตุการณ์ RunService.Stepped | ลดจำนวนหรือภาระงานของฟังก์ชันที่เชื่อมต่อกับเหตุการณ์นี้ พิจารณาการเลื่อนหรือแทนที่การคำนวณที่มีค่าใช้จ่ายสูง หรือกระจายการคำนวณไปยังหลายเฟรม |
เสียง
| ป้ายกำกับ | คำอธิบาย | คำแนะนำด้านประสิทธิภาพ |
|---|---|---|
| Sound | ประมวลผลการจำลองเสียงและอัปเดตเสียงในการเล่นอยู่ | ดูป้ายกำกับ Sound ด้านล่าง |
| Sound/stepInstances | อัปเดตระดับเสียงของเสียงที่ทำงานอยู่ในพื้นที่ทำงาน | ลดจำนวนเสียงในการเล่นอยู่ |
เครือข่าย
| ป้ายกำกับ | คำอธิบาย | คำแนะนำด้านประสิทธิภาพ |
|---|---|---|
| Net PacketReceive | รับแพ็กเกจเครือข่าย หากมีลูกวัตถุหรือเหตุการณ์จำนวนมากกำลังถูกทำซ้ำ ขั้นตอนนี้จะใช้เวลานานกว่า | ทำซ้ำวัตถุหรือเหตุการณ์ให้น้อยลง |
| Replicator/ProcessPackets | ประมวลผลเนื้อหาของแพ็กเกจเครือข่าย เช่น การเคลื่อนที่ การเรียกเหตุการณ์ และการเปลี่ยนแปลงคุณสมบัติ | ลดจำนวนหรือขนาดของวัตถุที่กำลังถูกทำซ้ำ หรือทำเรื่องนี้ในขั้นตอนที่ค่อยเป็นค่อยไป อาจสูงขึ้นหากขนาดแผนที่เพิ่มขึ้น เนื่องจากแผนที่ขนาดใหญ่จะมีความเคลื่อนไหวโดยรวมมากกว่า |
| Allocate Bandwidth and Run Senders/Dispatch Physics Senders and TouchSenders | ส่งข้อมูลเกี่ยวกับกิจกรรมในเกม | ลดจำนวนวัตถุที่เคลื่อนไหวและ/หรือการสัมผัส ดูส่วนถัดไป |
| Allocate Bandwidth and Run Senders/Dispatch StreamJob | ส่งภูมิภาคเฉพาะไปยังลูกค้าเฉพาะในฟีเจอร์สตรีมมิ่ง | ลดรัศมีการสตรีมขั้นต่ำและเป้าหมาย |
| Allocate Bandwidth and Run Senders/Dispatch Data Senders | ส่งการเปลี่ยนแปลงคุณสมบัติ การเรียกเหตุการณ์ระยะไกล การเปลี่ยนแปลงสถานะ Humanoid, การเปลี่ยนแปลงสถานะแอนิเมชัน และการทำซ้ำของอินสแตนซ์ใหม่ | ลดจำนวนการเปลี่ยนแปลงที่ทำซ้ำในโมเดลข้อมูล |
| Replicator SendCluster | ส่งข้อมูล Terrain ไปยังลูกค้า | ลดจำนวนหรือขนาดของการเปลี่ยนแปลงภูมิประเทศ |
| ModelCompleteness Mega Job | เฉพาะเซิร์ฟเวอร์: ความสมบูรณ์เป็นแนวคิดภายใน เมื่อแบบจำลองถูกส่งอย่างสมบูรณ์ เหตุการณ์ความสมบูรณ์ของแบบจำลองจะถูกส่ง | เพิ่มหรือลดจำนวนอินสแตนซ์ให้น้อยลง |
| deserializePacket | การประมวลผลแพ็กเกจเครือข่ายระดับต่ำ เตรียมสำหรับ Replicator/ProcessPackets | ส่งการอัปเดตให้น้อยลงหรือมีขนาดเล็กลง |
การเรนเดอร์
| ป้ายกำกับ | คำอธิบาย | คำแนะนำด้านประสิทธิภาพ |
|---|---|---|
| Prepare | ข้อมูลถูกเก็บรวบรวมจากเธรดหลักและอัปเดตโครงสร้างข้อมูลต่าง ๆ ที่ใช้ในการเรนเดอร์ | ดูป้ายกำกับ Prepare ด้านล่าง |
| Prepare/Pass3dAdorn | จัดการการเรนเดอร์ของการตกแต่งวัตถุหลากหลาย เช่น ป้ายกำกับข้อความเหนือวัตถุ สำหรับป้ายกำกับ Humanoid ที่มีการป้องกัน การกระทำนี้รวมถึงการเรย์แคสเพื่อกำหนดว่าอ็อบเจกต์ดังกล่าวมองเห็นได้หรือไม่ ซึ่งรวมถึงส่วนที่ไม่โปร่งใสเพื่อช่วยในการสร้างภาพวิเคราะห์ข้อบกพร่อง | ลดจำนวนวัตถุที่ตกแต่งอย่างมองเห็นได้ เช่น BillboardGuis, ป้ายชื่อ/สุขภาพของ Humanoid เป็นต้น ลดจำนวนส่วนที่มองเห็นได้ |
| Prepare/Pass2d | เตรียมการเรนเดอร์ UI 2D (ทั้ง UI ของผู้เล่นและ Roblox) | ลดจำนวนหรือความซับซ้อนขององค์ประกอบ UI |
| Prepare/UpdatePrepare/updateInvalidParts | อัปเดตชิ้นส่วนที่มีคุณสมบัติบางอย่างที่เปลี่ยนแปลงหรือเพิ่มเข้าไป | ลดจำนวนการเปลี่ยนแปลงคุณสมบัติในโลก หากสคริปต์อัปเดตชุดคุณสมบัติของวัตถุขนาดใหญ่ให้แบ่งออกเป็นเฟรม |
| Prepare/UpdatePrepare/updateInvalidatedFastClusters | เตรียมเรขาคณิต "FastCluster" ที่ใช้ในการเรนเดอร์ Humanoids และ MeshParts ที่มีการผูกมัด ป้ายกำกับระบุจำนวนส่วน, เวกเตอร์ และขนาดของเวกเตอร์ | ลดการเปลี่ยนแปลงทางกายภาพในโมเดลที่มี Humanoids หรือ MeshParts ที่มีการผูกมัด |
| Prepare/UpdatePrepare/updateDynamicParts | เตรียม Beams, ParticleEmitters, และ Humanoids สำหรับการเรนเดอร์ | ลดจำนวน Beams, ParticleEmitters, และ Humanoids ที่มองเห็นได้ |
| Prepare/UpdatePrepare/updateInstancedClusters | อัปเดตเรขาคณิตที่ใช้การเรนเดอร์เชิงสัมพันธ์ เช่น ส่วนส่วนป้ายกำกับ Clusters และ Instances ระบุจำนวนที่อัปเดต | ลดงานที่อัปเดตกล่องวงรอบของส่วนโดยปริยาย เช่น BasePart.CFrame, BasePart.Size, หรือ Motor6D.Transform การอัปเดตคุณสมณะสร้างสรรค์ เช่น Bone.Transform สามารถช่วยได้ |
| Perform | เมื่อสั่งให้สร้างและออกคำสั่งเรนเดอร์จริง | ดูป้ายกำกับ Perform ด้านล่าง |
| Perform/fillGuiVertices | เติมบัฟเฟอร์ด้วยเวอร์ติเซส UI เพื่อเตรียมดำเนินการ เราขอแนะนำว่า gui count ระบุจำนวน LayerCollectors ที่มองเห็นในกรอบ | หากมีค่าใช้จ่ายสูง ให้ลดจำนวน ความหนาแน่น และพื้นที่ที่ถูกครอบครองโดยองค์ประกอบ UI หากมีป้ายกำกับ Process GuiEffect มากเกินไป ให้พิจารณาลดการใช้ UIGradient และ UICorner บนป้ายกำกับข้อความ |
| Perform/Scene/queryFrustumOrdered | ใช้การกรองตามฟรัสตัมเพื่อไม่ให้วัตถุที่ไม่สามารถมองเห็นได้ถูกเรนเดอร์ | หากมีค่าใช้จ่ายสูง หมายความว่ามีองค์ประกอบมากมาย อาจใช้เมชขนาดใหญ่กว่าเมื่อเมชเดียวมีรายละเอียดมากกว่าหลายชิ้นเล็กๆ |
| Perform/Scene/computeLightingPerform | การคำนวณแสงใกล้กล้อง | ปรับจำนวนแหล่งกำเนิดแสงหรือเคลื่อนที่กล้องให้น้อยลงเพื่อลดเวลาในการคำนวณแสงใหม่ |
| Perform/Scene/computeLightingPerform/LightGridCPU | อัปเดตการเรนเดอร์ในวอกเซลซึ่งใช้ในระดับคุณภาพที่ต่ำ | หากใช้เวลานานเกินไปในการอัปเดตการครอบครองชิ้นส่วน พิจารณาใช้เรขาคณิตความละเอียดต่ำ ลดจำนวนส่วน หรือยึดส่วน หากป้ายกำกับอื่นๆ ใช้เวลานานเกินไป ให้พิจารณาลดจำนวนแหล่งกำเนิดแสงและใช้เรขาคณิตที่ไม่สร้างเงาสำหรับวัตถุที่เคลื่อนที่และทำให้การครอบครองไม่ถูกต้อง |
| Perform/Scene/computeLightingPerform/ShadowMapSystem | อัปเดตแผนที่เงา จะไม่ดำเนินการในระดับคุณภาพต่ำกว่า 4 | ลดจำนวนแหล่งกำเนิดแสง คุณยังสามารถใช้ Light.Shadows และ BasePart.CastShadow เพื่อปิดการสร้างเงาบนอินสแตนซ์ที่ไม่สำคัญเกินไป ดู ปรับปรุงประสิทธิภาพ |
| Perform/Scene/Glow, ColorCorrection, MSAA, SSAO, และ SSAOApply | การเรนเดอร์หลังการประมวลผล | ลดจำนวนผลการประมวลผลหลังการเรนเดอร์ โดยทั่วไปแล้วจะไม่สำคัญนัก |
| Perform/Scene/UI | การเรนเดอร์ UI ใน Id_Screen จะมีป้ายกำกับที่แสดงจำนวนแบตช์ วัสดุ และรูปสามเหลี่ยมที่ใช้ | ลดจำนวนองค์ประกอบ UI ที่มองเห็นได้ การใช้ CanvasGroups สามารถช่วยได้ แต่จะเพิ่มการใช้หน่วยความจำ |
| Perform/Scene/UpdateView/updateParticles, updateParticleBoundings | อัปเดตตำแหน่งและขอบเขตของอนุภาค | ลดจำนวนของ ParticleEmitters, อัตราการปล่อย, อายุ, เป็นต้น จำกัดการเคลื่อนที่ของตัวปล่อย |
| Scene/Id_Opaque, RenderView/Id_Opaque | ชิ้นส่วนในฉากที่มีความโปร่งใสโดยรวม 0.01 หรือต่ำกว่า | ลดการใช้และความหนาแน่นของส่วน |
| Scene/Id_Transparent, RenderView/Id_Transparent | ชิ้นส่วนในฉากที่มีความโปร่งใสโดยรวมระหว่าง 0.01 และ 1 | ลดการใช้ความโปร่งใสบางส่วน |
| Scene/Id_Decals, RenderView/Id_Decals | สติ๊กเกอร์ในฉาก | ลดการใช้สติ๊กเกอร์บนเมชที่ซับซ้อน |
| Scene/Shadows | การคำนวณเงาในฉาก ซึ่งโดยปกติจะทำในฉากที่มีการเคลื่อนไหวและการเล่นเกมทั่วไป ชิ้นส่วนใดๆ ไม่ว่าโปร่งใสจะสร้างเงาโดยอาศัยการสมมติว่ามีสติ๊กเกอร์เป็นส่วนประกอบ ไม่ได้ดำเนินการในระดับคุณภาพต่ำกว่า 4 | หากขั้นตอนนี้ใช้เวลานานเกินไป ให้พิจารณาปิดการใช้ BasePart.CastShadow สำหรับเมชที่ซับซ้อน ชิ้นส่วนที่มีความโปร่งใสบางส่วนสูง และอินสแตนซ์ที่ไม่สำคัญ ชิ้นส่วนที่โปร่งใสทั้งหมดที่ไม่มียางรองหรือไม่ต้องการเงางานหนึ่งจะต้องปิดการสร้างเงา BasePart.CastShadow ดู ปรับปรุงประสิทธิภาพ |
| Perform/Present | ส่งไปยังเธรด GPU เพื่อดำเนินการตามคำสั่งเรนเดอร์ | ลดความซับซ้อนของฉากโดยทั่วไป หากขั้นตอนนี้ใช้เวลานานเกินไป อาจจะถูกจำกัดโดย GPU |
| Perform/Present/waitUntilCompleted | รอให้ GPU เสร็จสิ้นการเรนเดอร์เฟรมก่อนหน้า | หากสิ่งนี้เกิดขึ้นบ่อยๆ จำนวนสิ่งที่เรนเดอร์สูงเกินไป ตัวจัดการอัตราเฟรมช่วยในการปรับสมดุลนี้ แต่หากยังสูงอยู่ ให้ลองติดตามคำแนะนำเกี่ยวกับประสิทธิภาพจากแท็ก Scene ส่วนบุคคล |
| LoadImage | ประมวลผลภาพให้อยู่ในรูปแบบที่เอนจินสามารถใช้ได้ | ลดการใช้ภาพขนาดใหญ่ |
สคริปต์
| ป้ายกำกับ | คำอธิบาย | คำแนะนำด้านประสิทธิภาพ |
|---|---|---|
| Render/PreRender/fireBindToRenderSteppedCallbacks | รันฟังก์ชันที่มีการเชื่อมต่อกับเงื่อนไขการเรนเดอร์ผ่าน RunService:BindToRenderStep() | ตรวจสอบให้แน่ใจว่าฟังก์ชันที่เชื่อมต่อกับเหตุการณ์นี้ทำงานให้น้อยที่สุดเท่าที่จะเป็นไปได้ |
| Render/PreRender/RunService.RenderStepped | รันฟังก์ชันที่เชื่อมต่อกับเหตุการณ์ RunService.RenderStepped | ตรวจสอบให้แน่ใจว่าฟังก์ชันที่เชื่อมต่อกับเหตุการณ์นี้ทำงานให้น้อยที่สุดเท่าที่จะเป็นไปได้ |
| WaitingHybridScriptJob | เริ่มต้นสคริปต์ที่รออยู่โดยใช้ Instance:WaitForChild() หรือ Globals.Roblox.wait() โดยปกติจะดำเนินการ 30 ครั้งต่อวินาที ขั้นตอนนี้มีงบประมาณเวลาในการดำเนินการเพื่อตัวสคริปต์ที่รออยู่ | หากคุณมีสคริปต์ที่รออยู่มากเกินไปหรือสคริปต์ที่มีระยะเวลายาวก่อนที่จะยอมแพ้ ขั้นตอนนี้จะถูกควบคุมและใช้เวลานานขึ้นก่อนที่จะสามารถดำเนินการได้อีกครั้ง ลดจำนวนฟังก์ชันที่มีการผูกมัดหรือการคำนวณที่ใช้เวลานานในขั้นตอนนี้ |
| GC | รอบของการจัดการขยะของ Luau | ใช้เฉพาะตารางและวัตถุอื่น ๆ ที่สามารถเก็บรวบรวมได้ หรือพยายามลดการสร้างตารางชั่วคราว |
| Heartbeat/RunService.Heartbeat | รันฟังก์ชันที่เชื่อมต่อกับเหตุการณ์ RunService.Heartbeat | ลดจำนวนหรือภาระงานของฟังก์ชันที่เชื่อมต่อกับเหตุการณ์นี้ พิจารณาเลื่อนการคำนวณที่มีค่าใช้จ่ายสูงหรือกระจายการคำนวณไปยังหลายเฟรม |
การจำลอง
| ป้ายกำกับ | คำอธิบาย | คำแนะนำด้านประสิทธิภาพ |
|---|---|---|
| Distributed Physics Ownership | กำหนดว่าตัวเซิร์ฟเวอร์หรือลูกค้ามีอำนาจเหนืออินสแตนซ์บางรายการเช่นชิ้นส่วนหรือไม่ | ลดจำนวนชิ้นส่วนที่เปลี่ยนความเป็นเจ้าของเครือข่ายบ่อยเกินไป โดยเฉพาะชิ้นส่วนที่มีการโต้ตอบกันทั่วไป |
| Simulation/assemble | อัปเดตต้นไม้ของวัตถุที่เชื่อมโยงกัน (การประกอบ) ที่ใช้โดยเอนจินฟิสิกส์ | ลดจำนวนข้อต่อที่ถูกสร้างขึ้นหรือถูกทำลาย |
| Simulation/physicsSteppedTotal/physicsStepped | รันการจำลองฟิสิกส์ | ลดจำนวนและความซับซ้อนของร่างที่ถูกจำลองทางกายภาพ |
| Simulation/physicsSteppedTotal/physicsStepped/SpatialFilter/filterStep | อัปเดตเกาะจำลอง จัดเรียงชิ้นส่วนตามความเป็นเจ้าของเครือข่าย การจำลองท้องถิ่น เกาะเป็นกลุ่มของชิ้นส่วนที่ไม่โต้ตอบซึ่งสามารถจำลองได้โดยอิสระ | หลีกเลี่ยงการตั้งค่าความเป็นเจ้าของเครือข่ายบ่อยเกินไป เก็บกลุ่มของชิ้นส่วนให้ห่างกันพอสมควรเพื่อให้สามารถจำลองแยกได้ |
| Simulation/physicsSteppedTotal/physicsStepped/worldStep/stepContacts | อัปเดตการติดต่อระหว่างวัตถุ | ลดจำนวนร่างกายที่ชนกันในครั้งเดียว หรือใช้กล่องการชนที่ง่ายกว่า ลูกบาศก์ดีกว่าเมชที่ซับซ้อน |
| Simulation/physicsSteppedTotal/physicsStepped/worldStep/stepWorld OR stepWorldThrottled | แก้สมการฟิสิกส์ที่เกี่ยวข้องกับตัวเชื่อม, แรงลอยน้ำ และ Humanoids เมื่อเอนจินมีภาระเกินกำลังและไม่สามารถจำลองทุกอย่างแบบเรียลไทม์ได้ ขั้นตอนบางอย่างอาจถูกควบคุม (stepWorldThrottled) และเฉพาะ "การประกอบเรียลไทม์" เช่น Humanoids เท่านั้นที่ได้รับการจำลอง | ขึ้นอยู่กับว่าเวลาไปที่ไหนตามสามเฟสต่อไปนี้: stepContacts: การทดสอบเรขาคณิตการตรวจจับการชนระยะแคบ Solver step: รวมเวลาและแก้ไขการชนและข้อจำกัดอื่น ๆ updateBroadphase: อัพเดตตำแหน่งของการประกอบในระบบการตรวจจับการชนและค้นหาคู่แคบที่อาจชนกัน |
| notifyMovingAssemblies | ช่วยติดตามว่าพื้นฐานใช้เวลานานเท่าใดในการนอนหลับ | |
| Simulation/physicsSteppedTotal/physicsStepped/interpolateNetworkedAssemblies | การปรับอินสแตนซ์ที่ไม่ได้ควบคุมโดยผู้เล่นปัจจุบัน | ตั้งค่าความเป็นเจ้าของเครือข่ายของชิ้นส่วนเป็นผู้เล่นปัจจุบันเพื่อลดสิ่งนี้ แต่สิ่งนี้มักจะทำให้มีงานฟิสิกส์มากขึ้นทำที่อื่น |
| Simulation/handleFallenParts | ลบชิ้นส่วนที่ตกลงใน Workspace.FallenPartsDestroyHeight | ลดความสูงในการทำลายหรือลดจำนวนชิ้นส่วนที่ตกลงมาใต้ระดับทำลาย |
| Heartbeat/heartbeatInternal/workspaceOnHeartbeat/updateVisuallySleeping | ส่วนที่สองของ notifyMovingAssemblies | |
| Heartbeat/RunService.Heartbeat | รันฟังก์ชันที่เชื่อมต่อกับเหตุการณ์ RunService.Heartbeat เพื่อจำลองและติดต่อสคริปต์ คำอธิบายปัจจุบันเป็นเรื่องทั่วๆ ไปพอที่จะไม่ผิด | ลดจำนวนหรือภาระงานของฟังก์ชันที่เชื่อมต่อกับ RunService.Heartbeat |
| worldStep/stepContacts | ช่วยให้การจำลองฟิสิกส์ก้าวหน้าไปด้วยการติดต่อหลายด้วยกัน | ลดจำนวนวัตถุที่ชนกัน |
| SolveBatch | ช่วยจำลองฟิสิกส์ในการแก้ชุดของการเคลื่อนไหววัตถุ |
UI
| ป้ายกำกับ | คำอธิบาย | คำแนะนำด้านประสิทธิภาพ |
|---|---|---|
| Render/PreRender/UpdateInput | อัปเดตและเรียกใช้เหตุการณ์ที่เกี่ยวข้องกับการป้อนข้อมูลของผู้ใช้หากผู้ใช้ได้ทำการป้อนข้อมูลตั้งแต่เฟรมสุดท้าย | ลองทำงานไม่ให้มากเกินไปเมื่อคุณได้รับข้อมูล ให้พิจารณาทำการประมวลผลป้อนข้อมูลในปริมาณน้อย และการคำนวณที่ใหญ่กว่าควรเลื่อนออกไปยังเธรดอื่นที่เกิดขึ้นในภายหลัง |
| Render/PreRender/TweenService | อัปเดตวัตถุที่กำลังแอนิเมตโดยใช้ TweenService และเรียกคืนการทำงานเสร็จสิ้น เช่น ที่ใช้ในการให้ GuiObject:TweenSize() หรือ GuiObject:TweenPosition() | ลดจำนวนวัตถุที่ถูกแอนิเมตด้วย TweenService และให้แน่ใจว่าคำเรียกกลับทำงานให้น้อยที่สุดเท่าที่จะเป็นไปได้ |
| Heartbeat/TweenService | บนเซิร์ฟเวอร์ TweenService จะทำงานใน RunService.Heartbeat แทนที่จะเป็น RunService.PreRender | ลดจำนวนวัตถุที่กำลังแอนิเมตโดยใช้ TweenService และให้แน่ใจว่าคำเรียกกลับทำงานให้น้อยที่สุดเท่าที่จะเป็นไปได้ |
| Render/PreRender/UpdateUILayouts | อัปเดตตำแหน่งและขนาดสำหรับองค์ประกอบ UI บน LayerCollectors ที่เปิดใช้งานทั้งหมด | ดูป้ายกำกับ UpdateUILayouts ด้านล่าง |
| Render/PreRender/UpdateUILayouts/Rebuild Z-order list | จัดเรียงลำดับ Z ขององค์ประกอบ UI (คำทางภายในที่ไม่ควรสับสนกับ GuiObject.ZIndex) เพื่อลดการฉีกขาดขององค์ประกอบ UI | ลดจำนวนองค์ประกอบ UI ที่มี GuiObject.ZIndex เดียวกัน |
| Render/PreRender/UpdateUILayouts/Layout | อัปเดตตำแหน่งและขนาดสำหรับองค์ประกอบ UI ใน LayerCollector ตัวหนึ่ง อาจมีป้ายกำกับที่มีข้อมูลเกี่ยวกับ UI ที่เกี่ยวข้อง พร้อมกับจำนวนการจัดรูปแบบใหม่ การอัปเดต และการปรับขนาด | ลดจำนวนองค์ประกอบ UI ที่มีการปรับขนาดหรือเปลี่ยนตำแหน่ง เช่นที่จัดการโดย UILayout และที่มีการแอนิเมตด้วย TweenService, GuiObject:TweenSize(), หรือ GuiObject:TweenPosition() ให้พิจารณาการใช้ขนาดคงที่สำหรับ BillboardGuis |