Jalan kaki ini menunjukkan cara menggunakan MicroProfiler untuk menemukan aspek problematik dari pengalaman dan mengidentifikasi penyebab utama. Unduh pengalaman, Buka dari File di Studio, dan ikuti.
Mengidentifikasi Masalah
Setelah Anda membuka pengalaman di Studio, mulai menguji dengan F5 atau tombol Bermain .
Tingkat frame terasa layak, tetapi tidak halus seperti yang seharusnya untuk pengalaman ukuran dan skala ini. Navigate to the Lihat tab and click Ringkasan under Statistik .
Catat bahwa tingkat frame adalah di bawah 60 frame per detik (FPS).
Buka MicroProfiler dengan menekan CtrlAltF6 ( ⌘1> ⌥1> 3> F63> ).
Catat bahwa waktu frame adalah konsisten — bar adalah kira-kira sama tinggi—jadi apa pun yang menyebabkan tingkat frame rendah berjalan setiap frame tunggal sebagai lawan berjalan sesekali dan menyebabkan spike waktu frame.
Berhentikan MicroProfiler dengan menekan CtrlP ( ⌘P ). Berhenti dengan pintasan keyboard membuka 2> mode rinci2> .
Klik dan seret untuk menyebarkan grafik. Catat bagaimana satu tugas khusus dalam thread pekerja tampaknya menggunakan banyak waktu pemrosesan dibandingkan dengan thread utama. Hover over RunService.Stepped dan catat berapa lama waktu render.
Batang-batang bertumpuk di timeline menunjukkan hierarki kode, jadi terus hovering di batang bawah dan bawah untuk mencoba dan mengidentifikasi masalahnya.
Catat label LocalScript, yang menunjukkan nama script, dan label Raycast, yang menunjukkan bahwa masalah mungkin terkait dengan raycasting.
Membuat Label Troubleshoot
Sekarang MicroProfiler telah menyediakan titik awal, Anda dapat menyelesaikan kode yang masuk akal.
Hentikan tes bermain dan filter jendela Explorer untuk menemukan file.
Sebuah pencarian untuk raycast menunjukkan bahwa bagian kode ini kemungkinan besar adalah penyebab kinerja buruk 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 mengkastilkan 1.500 sinar per detik dalam arah acak.
Untuk memverifikasi bahwa bagian kode ini menyebabkan kelambatan render, bungkus isi 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
Mengkonfirmasi dan Menyelesaikan Masalah
Mulai menguji pengalaman, dan buka MicroProfiler lagi.
Catat bagaimana MicroProfiler sekarang menunjukkan label khusus, menunjukkan bahwa fungsi ini memang penyebab utama.
Hentikan tes bermain.
Hapus atau komentari fungsi onStepped() dan koneksi RunService.Stepped:Connect(onStepped) .
Mulai menguji pengalaman lagi, dan periksa statistik debug lagi.
Catat peningkatan besar dalam tingkat frame dan penurunan sesuai dalam waktu frame di grafik MicroProfiler.