MikroProfiler gezintisi

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

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

  1. Deneyimi Studio'da açtıktan sonra, onu F5 veya Oyna düğmesiyle test etmeye başlayın.

  2. Ç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.

    Debug stats summary showing 45 FPS.

    Çerçeve oranının saniye başına 60 kareyi aşmadığını unutmayın (FPS).

  3. MikroProfili'yi açmak için CtrlAltF6 ( F6 ) tuşuna basın.

    The MicroProfiler after opening it.

    Ç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.

  4. MikroProfili'yi CtrlP ( P ) basarak duraklatın.Klavye kısayoluyla duraklatmak ayrıntılı modu açar.

  5. 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.

    Detailed mode with long labels for processes.
  6. 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.

    On-hover details for various processes, with LocalScript highlighted. On-hover details for various processes, with Raycast highlighted.

    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.

  1. Oynatma testini durdur ve dosyayı bulmak için localscript.

    A view of filtering in the Explorer window.

    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 = 1500
    local function onStepped()
    for _ = 1, RAYS_PER_SECOND do
    local startPosition = getRandomPosition()
    local endPosition = getRandomPosition()
    local direction = endPosition - startPosition
    Workspace:Raycast(
    startPosition,
    endPosition
    )
    end
    end
    RunService.Stepped:Connect(onStepped)

    Özellikle, kodun saniye başına 1,500 ışın atış yaptığını görebilirsiniz. rastgele yönlerde.

  2. 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 do
    local startPosition = getRandomPosition()
    local endPosition = getRandomPosition()
    local direction = endPosition - startPosition
    Workspace:Raycast(
    startPosition,
    endPosition
    )
    end
    debug.profileend()
    end

Sorunu onayla ve düzelt

  1. Deneyimi test etmeye başlayın ve MicroProfiler'i tekrar açın.

  2. MikroProfiler'in şimdi özel etiketi gösterdiğini gözleyin, bu işlevin gerçekten kök neden olduğunu belirterek.

    MicroProfiler detailed view with 'Raycast Spam' visible.
  3. Oynatma testini durdur.

  4. onStepped() fonksiyonunu ve RunService.Stepped:Connect(onStepped) bağlantısını sil veya yorumla.

  5. Deneyimi tekrar test etmeye başlayın ve yeniden denetim istatistikleri özetini kontrol edin.

    Debug stats summary showing 60 FPS.

    MikroProfiler grafiğinde çerçeve oranı ve karşılık gelen çerçeve sürelerindeki büyük gelişmeyi not edin.