Bu gezinti, bir deneyimin problemli bir yönünü bulmak ve temel nedenini belirlemek için MikroProfiler'i nasıl kullanacağınızı gösterir.Deneyimi indirin, Dosyadan Aç Studio'da ve devam edin.
Sorunu tanımla
Deneyimi Studio'da açtıktan sonra, onu F5 veya Oyna düğmesiyle test etmeye başlayın.
Çerçeve oranı iyi görünüyor, ancak bu boyut ve kapsam için olması gerektiği kadar pürüzsüz değil.Navigate to the Görüntüleme sekmesine gidin ve Özet altında İstatistikler altında tıklayın.
Çerçeve oranının saniye başına 60 kareyi aşmadığını unutmayın (FPS).
MikroProfili'yi açmak için CtrlAltF6 ( ⌘⌥F6 ) tuşuna basın.
Çerçeve sürelerinin tutarlı olduğunu unutmayın — çubuklar yaklaşık olarak aynı yüksekliktedir— bu yüzden düşük çerçeve oranına neden olan her şey, bazen çalışmak ve çerçeve süre sıçramalarına neden olmak yerine her bir çerçevede çalışıyor.
MikroProfili'yi CtrlP ( ⌘P ) basarak duraklatın.Klavye kısayoluyla duraklatmak ayrıntılı modu açar.
Grafiği panoya sürükle ve tıkla.İşçi iş parçalarından birinin, ana iş parçasına kıyasla çok fazla işlem süresi kullandığını gözlemleyin.Hover over RunService.Stepped ve görüntü oluşturmak için ne kadar süre aldığını not edin.
Zaman çizelgesinde yığınlanmış çubuklar, kodun bir sıralamasını gösterir, bu nedenle sorunu denemek ve tanımlamak için daha düşük ve daha düşük katmanlarda gezinmeyi sürdürün.
Senaryonun adını gösteren LocalScript etiketini ve sorunun raycasting ile ilgili olabileceğini gösteren Raycast etiketi not edin.
Sorun giderme etiketleri oluştur
Artık MicroProfiler bir başlangıç noktası sağladığına göre, sorunlu kodu çözebilirsiniz.
Oynatma testini durdur ve dosyayı bulmak için localscript.
Bir arama raycast bu kod parçasının muhtemelen deneyimin kötü sözleşme imzalamasuçlusu olduğunu gösterir:
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)Özellikle, kodun saniye başına 1,500 ışın atış yaptığını görebilirsiniz. rastgele yönlerde.
Bu kod parçasının görüntü gecikmesine neden olduğunu doğrulamak için, işlevin içeriğini debug.profilebegin() ve debug.profileend() ile sarın:
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
Sorunu onayla ve düzelt
Deneyimi test etmeye başlayın ve MicroProfiler'i tekrar açın.
MikroProfiler'in şimdi özel etiketi gösterdiğini gözleyin, bu işlevin gerçekten kök neden olduğunu belirterek.
Oynatma testini durdur.
onStepped() fonksiyonunu ve RunService.Stepped:Connect(onStepped) bağlantısını sil veya yorumla.
Deneyimi tekrar test etmeye başlayın ve yeniden denetim istatistikleri özetini kontrol edin.
MikroProfiler grafiğinde çerçeve oranı ve karşılık gelen çerçeve sürelerindeki büyük gelişmeyi not edin.