MicroProfiler Yürüyüşü

*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 yürüme, bir deneyimin problematik bir yönünü bulmak için MicroProfiler'ı nasıl kullanacağınızı gösterir ve kök nedeni belirlemek için. Deneyimi indirin, Stüdyo'dan Açık Dosya ile aç ve takip edin.


Problemi Tanımlama

  1. Stüdyo'da deneyimi açtıktan sonra, şunlardan biri ile test etmeyi başlat: F5 veya Oyna düğmesi.

  2. Kare hızının bu boyut ve çevre için gereken kadar pürüzsüz olduğunu hissediyor, ancak bir deneyimin bu boyut ve çevresi için gereken kadar pürüzsüz olmadığını gösteren Görüntü sekmesine ve İstatistikler altındaki Özet tıklamalarına.

    Debug stats summary showing 45 FPS.

    Görüntü kare hızının saniyede 60'ın altında olduğunu (FPS) unutun.

  3. MicroProfiler'ı açmak için CtrlAltF6 ( 1> ⌥1> 3> F63> )'i basılı tutun.

    The MicroProfiler after opening it.

    Çerçevelerin zamanları tutarlı - çubuklar küçük bir yüksekliğindedir - bu yüzden düşük çerçevelerin hızlı yanıtını yapmak için her çerçevenin tek bir kareyi yüklemesi yerine her kareyi yüklemesi gerekir.

  4. MicroProfiler'ı durdurmak için CtrlP ( P )'i basılı tut. Klavye kısayoluyla durdurulmasıyla 2>açık mod2> açılır.

  5. Grafiği tıklayın ve kaydırın. İşlemci şeritlerindeki bir görevin aşırı işlem süresi kullanıyor gibi göründüğünü not edin. RunService.Stepped üzerinde fareyi gezin ve render için kaç saniye sürdüğünü not et.

    Detailed mode with long labels for processes.
  6. Zaman çizelgesindeki üst üste yazılan çubuklar bir kod hierarşisi gösterir, bu nedenle dikkat altındaki ve altındaki katmanlarda gezinmeyi deneyin.

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

    LocalScript etiketini, öğrenimin adını gösteren ve Raycast etiketini, sorunun raycasting ile ilgili olabileceğini gösteren etiketleri vardır.

Problemi Çözme Etiketleri Oluşturulması

MicroProfiler'ın başlangıç ​​noktasını sağladığından, sorunlu kodu çözebilirsiniz.

  1. Oyun testini durdurun ve Explorer penceresini localscript için filtreleyin, dosyayı bulmak için.

    A view of filtering in the Explorer window.

    raycast için bir arama, bu kod bölümünün muhtemelen deneyimin kötü sözleşme imzalamaiçin suçluyu 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 her saniye 1,500 güneş ışığını rastgele yönlerde yayıyor olduğunu görebilirsiniz.

  2. Bu kod bölümünün rendeleme gecikmesine neden olduğunu doğrulamak için içeriği debug.profilebegin() ve debug.profileend() ile 包装 :


    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

Problemi Onaylama ve Düzeltme

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

  2. MicroProfiler'ın artık özel etiketi gösterdiğini ve bu işlevin aslında kök nedeni olduğunu gösteren bir not oluşturun.

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

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

  5. Deneyin tekrar test edilmesini başlatın ve debug istatistikleri sunumunu tekrar kontrol edin.

    Debug stats summary showing 60 FPS.

    MicroProfiler grafiğindeki görüntü kare hızı ve eşdeğer görüntü bekleme süresi için büyük artışı göz önünde bulundurun.