ต่อไปนี้คือรายการแท็กทั่วไปใน 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, and 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-order ภายในใหม่ขององค์ประกอบ UI (ไม่ควรสับสนกับ GuiObject.ZIndex) ใน LayerCollector ในการเรนเดอร์ครั้งแรกหรือเมื่อมีการเพิ่ม ลบ หรือเปลี่ยนแปลง GuiObject.ZIndex ขององค์ประกอบใหม่ | ลดจำนวนองค์ประกอบ UI ใน LayerCollectors ก่อนการเรนเดอร์ครั้งแรกและหลีกเลี่ยงการเปลี่ยนพ่อแม่และ GuiObject.ZIndex ขององค์ประกอบ UI ภายในบ่อยเกินไป ยิ่งมีองค์ประกอบใน LayerCollector มากเท่าไหร่ ประสิทธิภาพก็จะยิ่งแย่ลง |
| Render/PreRender/UpdateUILayouts/Layout | อัปเดตตำแหน่งและขนาดสำหรับองค์ประกอบ UI ใน LayerCollector ที่เฉพาะเจาะจง อาจมีป้ายกำกับที่มีข้อมูลเกี่ยวกับ UI ที่เกี่ยวข้อง พร้อมกับจำนวนการจัดเรียงใหม่ การอัปเดต และการปรับขนาด | ลดจำนวนองค์ประกอบ UI ที่ถูกปรับขนาดหรือเปลี่ยนตำแหน่ง เช่น องค์ประกอบที่จัดการโดย UILayout และที่ถูกทวีตด้วย TweenService, GuiObject:TweenSize(), หรือ GuiObject:TweenPosition() พิจารณาใช้ขนาดที่แน่นอนสำหรับ BillboardGuis |