Panduan ini menunjukkan cara menggunakan MicroProfiler untuk menemukan aspek problematik dari pengalaman dan mengidentifikasi penyebab akar.Unduh pengalaman, Buka dari File di Studio, dan ikuti.
Identifikasi masalah
Setelah Anda membuka pengalaman di Studio, mulailah menguji dengan F5 atau tombol Mainkan .
Tingkat frame terasa layak, tetapi tidak sehalus seharusnya untuk pengalaman dengan ukuran dan cakupan ini.Navigasikan ke tab Pandangan dan klik Ringkasan di bawah Statistik.
Perhatikan bahwa tingkat frame berada di bawah 60 frame per detik (FPS).
Buka MicroProfiler dengan menekan CtrlAltF6 ( ⌘⌥F6 ).
Perhatikan bahwa waktu bingkai adalah konsisten —bilahnya kira-kira memiliki ketinggian yang sama—jadi apa pun yang menyebabkan tingkat bingkai rendah berjalan setiap frame sebagai lawan dari berjalan sesekali dan menyebabkan lonjakan waktu bingkai.
Jeda MicroProfiler dengan menekan CtrlP ( ⌘P ).Pause dengan pintasan keyboard membuka mode terperinci.
Klik dan seret untuk memutar grafik.Perhatikan bagaimana tugas tertentu di thread pekerja tampaknya menggunakan banyak waktu pemrosesan dibandingkan dengan thread utama.Pasang di atas RunService.Stepped dan perhatikan berapa lama waktu yang dibutuhkan untuk menampilkan.
Bar tumpukan di timeline menunjukkan hierarki kode, jadi tetap berada di atas dan di bawah lapisan untuk mencoba dan mengidentifikasi masalah.
Perhatikan label LocalScript , yang menunjukkan nama skrip, dan label Raycast , yang menunjukkan bahwa masalahnya mungkin terkait dengan raycasting.
Buat label solusi masalah
Sekarang MicroProfiler telah memberikan titik awal, Anda dapat memecahkan masalah kode yang bermasalah.
Hentikan tes bermain dan filter jendela Explorer untuk localscript menemukan file.
Pencarian untuk raycast menunjukkan bahwa bagian kode ini mungkin adalah penyebab buruk kinerja pelaksanaan:
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)Secara khusus, Anda dapat melihat bahwa kode memancarkan 1.500 sinar per detik ke arah acak.
Untuk memverifikasi bahwa bagian kode ini menyebabkan penundaan rendering, bungkus konten fungsi dengan debug.profilebegin() dan 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
Konfirmasi dan perbaiki masalah
Mulai menguji pengalaman, dan buka MicroProfiler lagi.
Perhatikan bagaimana MicroProfiler sekarang menampilkan label khusus, menunjukkan bahwa fungsi ini memang penyebab akar.
Hentikan tes permainan.
Hapus atau komentari fungsi onStepped() dan koneksi RunService.Stepped:Connect(onStepped).
Mulai uji pengalaman lagi, dan periksa ringkasan statistik debug lagi.
Perhatikan peningkatan besar pada tingkat bingkai dan penurunan yang sesuai pada waktu bingkai di grafik MicroProfiler.